|
最近在使用别人用gcc3.3.4(使用的C++标准库是libstdc++.so.5)编写的共享库(so文件)的时候, 发现一个怪问题.
我用的是gcc3.4.5(使用的C++标准库是libstdc++.so.6), 我在程序中需要使用别人的库, 编译的时候, link阶段有个warning, 提示 共享库使用libstdc++.so.5,可能与libstdc++.so.6冲突, 只是warning, 编译倒是成功了.
但是在运行的时候, 有时候莫名其妙的异常退出.
查看堆栈信息, 原来是map容器析构的时候发生的,
map<string, ***>
map容器析构时, 先析构string, 而string析构时又执行delete操作, 而delete操作最终调用free来释放内存, 根据堆栈显示来看, 就是free导致的异常.
网上搜了一下, 发现很多人遇到类似的问题, 应该是libstdc++.so.5与libstdc++.so.6的兼容问题, 不知道有没有知道具体原因的? |
|