가르키는 포인터가 사라진 힙영역의 안정성 확보를 할수있나요?
글쓴이: oneclubs / 작성시간: 금, 2009/04/17 - 3:54오후
예를 들면..
char *string = new char[15];
sprintf(string, "test");
특정상황이 발생하여 string이 다른 주소를 가르키게 되었을때,
원래 가르키던 주소의 15바이트는
다른놈에 의해서 침범될수 있나요 아니면 프로그램 종료하기 전까지 사용불가 영역으로 되나요
특정함수내에서 힙영역에 저런식으로 new로 공간을 잡고 포인터가 소멸해버리거나 다른지역을 가르켜버렸을때
다른 함수에서 그 힙영역의 주소를 안다면 접근이 가능한건가요?
아무래도 접근은 될듯한데... c는 가비지 콜렉터가 없으니까요..
안정성은 보장이 되는겁니까?
Forums:
보장 가능합니다.
프로그램 안에서 C를 위하여 만든 변태적 가비지 컬렉터 같은 걸 함께 돌리고 있지만 않다면 얼마든지 접근할 수 있습니다.
C와 C++은 어떻게든
C와 C++은 어떻게든 찾아서 해제하기 전에는 해제되지 않고 종료전까지 힙에 남아있습니다.
ㅡ_ㅡ;
> 특정상황이
> 특정상황이 발생하여 string이 다른 주소를 가르키게 되었을때,
> 원래 가르키던 주소의 15바이트는 다른놈에 의해서 침범될수 있나요.
네. 침범될 수 있습니다.
정상적인 경우에는 그 영역을 가리키는 주소가 없으므로 직접 접근은 불가능하지만, (잘못된) 코드로 인하여, 그 영역이 (원치않게) 덮어써지는 것을 막을 수는 없습니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기