3

WindowsとMac(VSTとAU)の両方のオーディオプラグインを開発していますが、64ビットホストDAW(私の場合はReaper)でプラグインを開いたときにのみ発生する問題が発生しました。 OSX10.8。

プラグインはユニバーサルバイナリビルドであり、32ビットホストで正常に動作しますが、Reaper 64ビットで開くと、フィルターオブジェクトを割り当てるランダムな新規/削除命令でクラッシュします。テストのために64ビットプラグインとしてビルドしようとしましたが、同じことが起こりました。

これを引き起こす原因は何ですか?

編集:クラッシュレポートのスクリーンキャプチャは次のとおりです。 ここに画像の説明を入力してください

4

1 に答える 1

0

64ビットホストを使用しているときにランダムメモリエラーが発生する問題を見つけました。ポインタの内容をクリアするために、floatとして宣言されたポインタのサイズを参照するmemset関数がありました。もちろん、64ビットホストではポインタサイズが64ビットであるため、memset関数がヒープを破損し、気まぐれなメモリエラーが発生します。

これはmemset関数でした:

float *z;
//...
memset(z, 0, sizeof(z)*size);

その意図は、zが最終的にdoubleを宣言した場合、この関数では割り当てられたメモリのブロックを自動的に調整することでした。64ビットのコンテキストで何が起こるかを見落としていました。

于 2013-01-14T04:35:22.503 に答える