こんにちは、デバッグの概念を学んでいます。このプログラムでは、コア ダンプをシミュレートしようとしています。コアがダンプされることを期待していますが、コアを生成していません。プログラムは問題なく実行されます。
まず、ptr に 20 バイトを割り当てます。新しい文字列を 1 つ ptr にコピーします。次に、ptrを解放し、pblmなしで機能するptrを印刷します。最後に、今回はコア ダンプが生成される可能性があると思われる他の文字列を再度割り当てます。しかし、私はコアダンプを取得しませんでした。コアダンプが生成されない理由を誰でも説明できますか。
int main()
{
char *ptr;
ptr =(char*) malloc (20);
strcpy(ptr,"MemoryOperations");
printf("Before Free memory : %s\n",ptr);
free(ptr);
printf("After Free memory : %s\n",ptr);
strcpy(ptr,"MemReassign");
printf("After Re Assigning : %s\n",ptr);
return 0;
}
dbx を使用して実行する同じコード、
(dbx) check -all
access checking - ON
memuse checking - ON
(dbx) run
Running: a.out
(process id 19081)
RTC: Enabling Error Checking...
RTC: Running program...
Before Free memory : MemoryOperations
Read from unallocated (rua):
Attempting to read 1 byte at address 0x100101a48
which is 2232 bytes into the heap; no blocks allocated
stopped in _ndoprnt at 0xffffffff671abbf0
0xffffffff671abbf0: _ndoprnt+0x1c04: call _PROCEDURE_LINKAGE_TABLE_+0x620 [PLT] ! 0xffffffff67340d20
(dbx) exit