1
다음과 같이 간단한 프로그램을 작성했습니다.메모리 액세스 위반이 C에서 오류를주지 않는다
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *a=NULL;
int i;
a = malloc(sizeof(char) *10);
memset(a,100,'\0');
if(a == NULL) printf("errr\n");
for(i=0;i<20;i++)
a[i]='c';
printf("%s",a);
printf("%d",strlen(a));
}
여기서는 10 바이트 만 할당하고 20 바이트를 할당했습니다. 코드를 성공적으로 컴파일하고 세분화 오류없이 실행하십시오.
제 질문은 여기에 어떤 세분화 오류도주지 않는 이유는 무엇입니까?
seg 오류를 제공 할 필요는 없으며 간단히 [정의되지 않은 동작] (http://en.cppreference.com/w/cpp/language/ub)이므로 프로그램이 나타날 수도 있습니다. '작업'. – George