华灯初上

大家还是要理解链接不同类型为什么程序会崩溃。其实本质上debug和release库都是动态库,而且vc的调试信息是在pdb文件中。即使release库有优化指令,但是只要函数调用进去应该没有影响才对。然而对于使用了STL标准库的vc程序来说,有一个非常重要的地方,就是同样一个STL对象,比如std::string,在debug下的类定义和release下是不一样的,增加了一些用于调试、错误检查的成员变量。因此当混合调用函数时,比如从debug程序调用了release的库,std::string是在debug模式下分配的内存空间,而release库编译时看到的std::string内存布局是与此不同的,所以库里的函数一调用std::string的函数就会崩溃。

 
评论
我喜欢思想的生长,没有终点,没有方向。