1

最近、C++ アプリケーションを Mac (gcc) から Windows (MSVC2010) に移行しようとしています。しかし、私のコードの 2 行がクラッシュを引き起こしています。

if (block != NULL)
    free(block);

これらの 2 行は、Mac OS の gcc では問題なく動作しますが、Windows ではクラッシュします。Visual Studio でコメントすると、メモリ リークが発生します。「ブロック」は次のように割り当てられます。

uchar* block = (uchar*)malloc(_bytes_per_pixel * _width * _height);
memset(block, 0xff, _bytes_per_pixel * _width * _height);

その後、その値を入力する別のライブラリから API 関数に渡されます。

free() がクラッシュする原因と、gcc (Mac OS) ではなく MSVC (Windows) でのみクラッシュする理由を知りたいです。私はc ++とstackoverflowが初めてなので、誰かが助けてくれれば幸いです。

4

0 に答える 0