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
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