1

ubuntu でコードをコンパイルしているときにこのメッセージが表示される理由を知りたい

    $*** glibc detected *** ./a.out: malloc(): memory corruption: 0x00000000024dd190 ***        

しかし、同じコードは code::blocks でエラーなしで機能し、正しい結果が得られます?? このエラーを修正するには、あなたの助けが必要です。

コンパイラを更新しようとしましたが、うまくいきませんか?!

アップデート:

このステートメントを実行すると、エラーが表示されます。

    $first_array = (unsigned long*)malloc(sizeof(unsigned long*));

エラーがあるようには見えません。はい??

4

1 に答える 1

0

符号なしの長さではなく、ポインタのサイズに等しいメモリ内のサイズを定義しているので、次を使用する必要があります。

first_array = (unsigned long*)malloc(sizeof(unsigned long));

32ビットシステムを使用している場合、最初のコードはメモリに4バイトを割り当て、次に8バイトのデータ構造へのポインタでポイントします。ポインタのサイズではなく、変数のサイズを割り当てる必要があります。

于 2012-11-19T17:57:30.257 に答える