我正在尝试在MacOSX10.6.8和Xcode3.2.6上编译一个包含-std=c++0x的程序。我使用自制软件将我的g++编译器升级到g++-4.7。在我的makefile中,我将代码行从:
CXX = g++
CXXFLAGS = -std=c++0x
LD = g++
LDFLAGS = -L.至:
CXX = g++-4.7
CXXFLAGS = -std=c++0x
LD = g++-4.7
LDFLAGS = -L.然而,这一行不起作用:
$(CC) -c -Icore/include/ -Ianalysis/include -Ieventbuilders/include -Isimdut/include -Istyle/include $(CXXFLAGS) $< -o $@因此,我将其更改为:
$(CXX) -c -Icore/include/ -Ianalysis/include -Ieventbuilders/include -Isimdut/include -Istyle/include $(CXXFLAGS) $< -o $@现在一切都可以编译了,但是当我运行我的文件时,我得到了以下错误:
tbmon(25203) malloc: *** error for object 0x1029249b0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap有人能告诉我我做错了什么吗?提前谢谢你!
发布于 2013-09-22 06:41:53
你在程序中有一个bug,它在一个指针上调用free(),而这个指针不是用malloc()获得的。或触发此行为的代码中的其他与内存相关的错误。
您提供的Make文件与此问题无关。你必须修改程序代码。
发布于 2013-09-22 06:42:12
假设只是将编译器从gcc更改为g++,应该不会导致free(3)失败。你能发布一个最小的例子来演示这个问题吗?
https://stackoverflow.com/questions/18938396
复制相似问题