void* 에대한 질문입니다.
글쓴이: skylandi / 작성시간: 금, 2003/07/18 - 11:12오후
void main() { void *p; int *a=new int; *a=20; p=(void *)a; delete p; cout << *a<<endl; *a=30; cout << *a<<endl; }
1. 다음 소스를 실행결과 void *p가 가리키는 a의 동적 부분을 지우려고 했는데
이 것이 제대로 지워 졌는지 의문이 생깁니다.
실행 결과는 안지워 졋습니다.
2. void *p가 가리키는 int,char,float,struct,class등을 지울수가 있는지 궁금합니다.
Forums:
delete 는 단지 메모리가 해제되는 것이 아니라,pointer의
delete 는 단지 메모리가 해제되는 것이 아니라,
pointer의 type에 따라 해당 소멸자가 먼저 불립니다.
소멸자가 불리고 난 뒤, 해당 type의 크기에 해당하는 메모리가 heap 상에서도 제거 되므로,
할당받은 pointer type과 다른 type으로 해제할 경우 (그것이 void*일지라도) 행동을 보장할 수 없습니다.
---
http://coolengineer.com
댓글 달기