David Cole writes:

> Not only is it possible ... it WILL happen if you use the Microsoft
> C++ compiler and try to mix and match Release and Debug compilation
> units.
>
> The MS compiler has some very nice memory tracking facilities built
> into the Debug runtime libraries, but it is accomplished via different
> structs for Debug and Release builds with extra stuff in the Debug
> structs.

> So allocations from a Debug compilation unit will not be accessed
> correctly in a linked-in Release compilation unit when a pointer to it
> is passed across the boundary.
>
> You will see access violations and hard crashes happening in builds
> from the Microsoft compiler unless you ensure that everything in a
> build has matching Debug/Release defines and compiler settings.
>
> It is only safe to mix-n-match if all calls which cross a boundary
> between compilation units have NO differences in their struct and
> class definitions from an ABI perspective. Since it is difficult to
> verify when this is the case (in general) for large C++ projects, it's
> best to avoid mixing and matching...

I'm *not* mixing stuff built with `-g` and stuff built without it.  I'm
also *not* mixing linking with debug- and non-debug libraries.

I'm only mixing stuff build with `-DNDEBUG` and stuff built without it.

/M

--
Magnus Therning              OpenPGP: 0x927912051716CE39
email: mag...@therning.org   jabber: mag...@therning.org
twitter: magthe               http://therning.org/magnus

Software isn't finished until the last user is dead.
    -- head on FLOSS Weekly

Attachment: signature.asc
Description: PGP signature

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to