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