我在使用GCC 4.5的Mac OS X 10.6.6下遇到静态加速库(来自MacPorts的Boost 1.45.0-2,编译为fat/universal(x86/x86_64)库)的一些非常奇怪的问题.
错误消息是
main(78485) malloc: *** error for object 0x1000e0b20: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
[1] 78485 abort (core dumped)
Run Code Online (Sandbox Code Playgroud)
以及一小段示例代码将触发此问题:
#define BOOST_FILESYSTEM_VERSION 3
#include <boost/filesystem.hpp>
#include <iostream>
int main (int argc, char **argv) {
std::cout << boost::filesystem::current_path ().string () << '\n';
}
Run Code Online (Sandbox Code Playgroud)
将静态boost库链接到二进制文件时,总会出现此问题.但是,动态链接可以正常工作.
更多信息:
测试/使用的gcc版本: Apple GCC 4.2.1(工作/运行),MacPorts GCC 4.5.2(失败)
标记测试/使用:无,-fPIC,-fPIC -g,-fPIC -g -ggdb3 -gdwarf-2 -O0
MP GCC 4.5.2的gdb输出/上述任何标志:
(gdb) run
Starting program: /Users/ionic/crashtest/bin/ctest Reading …Run Code Online (Sandbox Code Playgroud)