#include <stdio.h>
int main()
{
int *p = (int *)malloc((100*sizeof(int)));
p++;
free(p);
/* do something */
return 0;
}
質問:Cの質問()
位置p + 1から始まるメモリをmalloc関数が0x1000のを返した場合、解放されたメモリは、Aと仮定すると、0x1004からだろうと言う(無料となります4バイト整数)?
は(あなたがアドレスをP--を行うと、使用しない限り)0x1000番地から4バイト(malloc関数が0x1000のを返した場合)使用可能ではないという事実
あなたの書式が修正されました。コードの書式を正しく設定する方法については、編集ヘルプをお読みください。 –
あなたの質問に直接関係しないヒントについては、(1)Cでは 'malloc'からの返答をキャストしないでください。これは" stdlib.h "を含まない例。 32ビットマシンから64ビットに移行すると、コードが失敗することがあります。 (2)「main」の署名を「改革」しないでください。 Cの 'int main()'と 'int main(void)'は同じではありません。 –