Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
ある種のポインターの衝突が発生しています。
基本的に、私が行う1つの機能では、
a = calloc(1,28); // gives me 0x100100d10
それからすぐに、私が行うサブ機能で、
b = calloc(1,16); // gives me 0x100100d20;
最初のアドレス + 28 は 0x0..d2C です。
何が起きてる?
ポインター値は、gdb ではなく、printf からのものです。
あなたが説明したようにこれが実際に起こっている場合は、割り当てられたブロックの境界外に書き込むことによって(または、おそらく初期化されていないポインターまたは既に解放されたメモリへのポインターを使用することによって)、ヒープが破損しているため、未定義の動作が呼び出されます。ツール valgrind はおそらく問題を追跡するのに役立ちます。または、プログラムが大きすぎない場合は、無効なポインターの使用を手動で検索するだけで済みます。