Xcode で非常に一貫性のないエラーが発生します。
malloc: *** error for object 0x1041146f8: incorrect checksum for freed object - object was probably modified after being freed. *** set a breakpoint in malloc_error_break to debug
32 ビット ビルドは正常に動作するため、それが私のコードではないことはわかっています (アーキテクチャは Standard 32/64 に設定され、Build Active Architectures Only は No に設定されています)。また、コメントを変更しなくても問題なく動作することもありますが、約 10% の確率でしかありません。
ブレークポイントを使用してエラーを追跡しました。myClass = new MyClass のような ivar で発生することもありますが、関連のない ivar を削除すると発生することもあります。新しいインスタンスを作成する前に myClass を null に設定しようとしましたが、それは役に立ちませんでした。キャッシング、レジスタ、ヒープ、およびスタックを完全に理解していないため、途方に暮れています (理由についての洞察が得られる可能性があります)。これは事件です)。
エラーが発生している場所のコードの一部を次に示します。コードの行の各セットは、エラーが発生する場合と発生しない場合がある別の場所とクラスであることに注意してください。
エラー 1
void functionA() {
// bunch of unrelated code
if (aAinterpFilter)
delete aAinterpFilter;
// this is where the first error sometimes happens
aAinterpFilter = new InterpFilter((Window::Sinc::LP*)filterDesign, aAinterpFactor);
}
エラー 2
Window::Sinc::LP::~LP ()
{
// the z delete is where the error sometimes happens
delete[] z;
delete[] kernel;
}
エラー 3
void AAOsc :: setPhase(double phase) {
if (phase < 0.0) phase = 0.0;
if (phase > 1.0) phase = 1.0;
// this is where the error rarely happens, but it does sometimes.
osc->tickInfo->curvPhase = static_cast<uint>(phase * 4294967296.0);
}
解決策を示す可能性のあるアイデアは大歓迎です。
GW