메모리 예외를 받고 있지 않다. 그래서 내가 할이는 이유는 무엇</p> <pre><code>struct foo{ int a; int b; }; </code></pre> <p>가 지금은 2 개 항목의 배열을 만들려는이 데이터 구조를 가지고 있다고 가정 여기
struct foo* farry = (struct foo*) malloc(2 * sizeof(struct foo));
나는 2 개 슬롯 foo는 구조 기본 초기화 한 만들 것 잘못 위입니다 경우 제발 올바른? 그 맞습니까 ? 그럼 내가 그런 다음이
struct foo* farry = (struct foo*) malloc(2 * sizeof(struct foo));
farry[0].a =1;
farry[1].a =2;
farry[2].a =3;
farry[3].a =4;
farry[4].a =5;
for(i=0 ; i<=4 ; i++)
{
printf("Value %d \n",farry[i].a);
}
을 할 경우 왜 farry[2].a =3
에서 그것은 메모리 오류가 발생한 것을 말해하지 않습니다. 대신 단순히 1,2,3,4,5를 인쇄합니다.
C는 배열이 범위를 벗어남에 따라 매우 관대합니다. 범위를 벗어난 정의되지 않은 배열에 액세스하면 오류가 발생합니다. –
http://stackoverflow.com/documentation/c/364/undefined-behavior#t=201611100730536038753 –
@PrasunJajodia 올바르게 정리해 주셔서 감사합니다. 안정적으로 1,2를 얻는 것은 단지 2 개의 인덱스가 있기 때문에 정확합니다. –