게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[C] malloc/구조체 관련 프로그래밍 질문 드립니다..!
게시물ID : programmer_8967짧은주소 복사하기
작성자 : 천이랑
추천 : 0
조회수 : 1895회
댓글수 : 3개
등록시간 : 2015/03/29 13:31:07
옵션
  • 베스트금지
  • 본인삭제금지
#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에서 메모리 할당이 잘못됐나 했는데 엉뚱한 곳에서 에러가 나니 당황스럽네요..

어디를 손봐야 정상 작동할까요..? 도움 부탁드리겠습니다!
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호