-1
這裏是我的代碼是否通過的malloc分配的內存有邊界?
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
int main()
{
void *p=malloc(1);
int *x=(int*)(p);
*(x+1000)=1000;
printf("*(x+1000)=%d\n",*(x+1000));
//*(x-100)=-100;
//Segmentation fault
return 0;
}
輸出
*(x+1000)=1000
,但我沒跟4000(1000 *的sizeof(INT分配的內存) )大小內存,只有1.
當我用*(x-100)=-100
時,shell會輸出Segmentation fault
,這似乎是有道理的。
你能告訴我爲什麼嗎?
感謝
我使用Ubuntu 16.04.4和gcc 5.4.0
未定義的行爲未定義。 – John3136