多个GCC版本导致多个堆,导致崩溃?

时间:2013-06-07 06:57:14

标签: c gcc

我已经下载了一个带有大量静态和动态库的Linux C SDK。自述文件有这样说:

  

此SDK是使用gcc版本4.5.1编译的。

     

你不应该将这个SDK二进制文件与其他gcc版本混合,因为   您的应用程序将最终加载两个不同的libcs​​,其中   导致两个不同的堆。混合堆将导致应用   当试图释放由另一个人分配的内存时崩溃   堆。

我从来没有听说过这样的事情,网上搜索也没有发现任何确认信息。我所发现的是关于ABI的东西,但据我所知,这只是意味着,这些库可能与我的GCC版本不兼容,因为它们根本不运行。这与libc版本或堆无关。

那么,自述文件说的是真的吗?或者,更笼统地说:我是否应该尝试使用我在互联网上下载的另一个GCC版本的库而不是他们编译的库? 如果我想使用几个使用不同GCC版本编译的库,该怎么办?

谢谢大家, Moritz的

1 个答案:

答案 0 :(得分:-1)

这可能是由于用于构建SDK的优化所致。如果混合,高度优化的二进制文件有更多崩溃的可能性。