메모리 카피에 관한 질문...
글쓴이: swunk / 작성시간: 금, 2006/01/06 - 11:22오전
struct A { int a; int b; struct A* next; }; struct A *x = (struct A*)malloc(sizeof (struct A));; x->a=1; x->b=2; struct A *a; struct A *b = (struct A*)malloc(sizeof (struct A));
인 상황에서
(1) memcpy( a, x, sizeof(struct A)); (2) memcpy( b, x, sizeof(struct A));
(2) 번과 같이 처리할때는 문제가 없는데,
(1) 번으로 수행할 경우 어떤 문제가 발생하나요 ?
(1) 번과 같이 처리하면 어느 경우는 segment fault가 발생하고 어떤경우는 발생하지 않던데...
고수님들의 답변 부탁드립니다.
Forums:
Re: 메모리 카피에 관한 질문...
(1) 의 경우는 메모리 공간이 할당되지 않은 pointer 에 직접 메모리 카피를 수행하게 되므로 segfault 가 나는것이 제대로 된 것입니다.
발생하지 않는 경우가 있다 하더라도 그 부분의 data 가 다른 변수의 data 를 침범했거나 차후에 그 부분이 침범당할 수 있습니다.
a 에 대해 제대로 된 공간을 b 처럼 해주고 나서 사용하시면 됩니다.
Neogeo - Future is Now.
segment fault 가 발생하지 않는 경우가 있다는 점이 이상하신것
segment fault 가 발생하지 않는 경우가 있다는 점이 이상하신것 같군요.
*a 를 선언만 하고 초기화를 하지 않으면
쓰레기 값이 들어있는데
이 쓰레기 값이 경우에 따라 운 좋으면, 접근 가능한 주소인 경우가 있어서 그럴껍니다...
이런 경우에는 에러가 지대로 나주기를 바라는 쪽이 더 좋겠죠...
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
댓글 달기