-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
을 사용할 때, 쉘은 Segmentation fault
을 출력 할 것이고, 이는 의미있는 것처럼 보인다.
이유를 말해 줄 수 있습니까?
덕분에
나는 우분투 16.04.4 및 GCC 5.4.0
정의되지 않은 동작은 정의되지 않았습니다. – John3136