<div>#include <stdio.h></div> <div>#include <stdlib.h></div> <div>#include <string.h></div> <div><br></div> <div>struct Example{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int number;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>char name[10];</div> <div>};</div> <div>void main()</div> <div>{</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>struct Example *p;</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>p = (struct Example *)malloc(2 * sizeof(struct Example));</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>if (p = NULL){</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>fprintf(stderr, "can't allocate memory \n");</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>exit(1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>p->number = 1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strcpy_s(p->name, sizeof(p->name), "Park");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>(p + 1)->number = 2;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>strcpy_s((p + 1)->name, sizeof((p+1)->name), "Kim");</div> <div><br></div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d\n", p);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>printf("%d\n", p + 1);</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>free(p);</div> <div>}</div> <div><br></div> <div>지금 자료구조를 배우고 있는 학생인데요..</div> <div>이 예제가 교재에 나와있는 코드를 99%따온 코드인데 실행을 하면 p->number = 1을 지나갈 때 처리되지 않은 예외가 있다며 디버깅이 중지되네요..</div> <div>(제 버전이 VS2013이라 strcpy_s를 써야해서 변경한 것과 출력을 위해 printf를 사용한 것을 제외한 모든 코드가 같습니다.)</div> <div><br></div> <div>정확한 에러는 다음과 같습니다.</div> <div>0x00111476에(Malloc01.exe의) 처리되지 않은 예외가 있습니다.</div> <div>0xC0000005: 0x00000000 위치를 기록하는 동안 액세스 위반이 발생했습니다..</div> <div><br></div> <div>처음엔 malloc에서 메모리 할당이 잘못됐나 했는데 엉뚱한 곳에서 에러가 나니 당황스럽네요..</div> <div><br></div> <div>어디를 손봐야 정상 작동할까요..? 도움 부탁드리겠습니다!</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.