1

xcode 3.2.6 を使用する Mac OS X 10.6.8 で -std=c++0x を含むプログラムをコンパイルしようとしています。g++ コンパイラを自作で g++-4.7 にアップグレードしました。私のメイクファイルでは、行を次のように変更しました。

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

誰かが私が間違ったことを教えてもらえますか? 前もって感謝します!

4

2 に答える 2

1

free()で取得されなかったポインターを呼び出すプログラムにバグがありますmalloc()。または、この動作をトリガーするコード内のその他のメモリ関連のバグ。

あなたが提供した Make ファイルは、この問題とは関係ありません。プログラムコードを修正する必要があります。

于 2013-09-21T22:41:53.493 に答える
0

おそらく、コンパイラを gcc から g++ に変更しただけでは、free(3)失敗することはありません。問題を示す最小限の例を投稿していただけますか?

于 2013-09-21T22:42:12.300 に答える