Rhino 6 C++ How to Detect Memory Leaks?

(Luke Niwranski) #1


What is the recommended method for finding memory leaks in a C++ plug-in written for Rhino 6?

Please correct me if I’m wrong, but for Rhino 4 and Rhino 5, the SDK provided a copy of Rhino_d.exe that was linked with the debug CRT library. But from what I can tell, Rhino 6 doesn’t do this. The manual migration guide indicates to delete the old Debug configuration and just use the PseudoDebug configuration instead (which uses the non-debug CRT library). Because Rhino now uses the non-debug CRT, all C++ plug-ins must now also use the non-debug CRT.

How can we detect memory leaks without the debug CRT and it’s suite of debug allocation/deallocation tools? Is there a workaround or alternative to this? Are there any plans to re-introduce a copy of Rhino_d.exe with the C++ SDK to allow for linking with the debug CRT?



(Dale Fugier) #2

Hi @lukeniwranski,

How do you do this in your AutoCAD solution?

– Dale

(Luke Niwranski) #3

Hi @dale,

Are you perhaps thinking of our online solution? We have a publisher plug-in for both Fusion 360 and Onshape for automatically uploading models to our online flattener. Most of these solutions are all managed code and we’re able to detect memory leaks in the unmanaged portion within the Visual Studio IDE by linking to the debug CRT.

Our SOLIDWORKS solution is written in C# so there’s no memory to manage.

The only part we can’t actively detect leaks in is the Rhino 6 plug-ins. For now we know the code is good because it’s the same code used for Rhino 5, but moving forward we don’t plan on maintaining both the Rhino 5 and Rhino 6 plug-ins so being able to detect memory leaks in Rhino 6 is important to us.


(Dale Fugier) #4

Hi @lukeniwranski,

I don’t see us providing a debug version of Rhino any time soon - sorry.

– Dale