C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[35454] Re:[급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요?
김상면 [] 918 읽음    2004-06-07 20:29
어째 이런 질문을 하남요
new는 동적 메모리할당
delete 동적 메모리 헤제

일반적으로 동적 메모리 생성이라고 하는데 할당(확보)입니다.
동적 메모리 삭제 라고 알고 있는데 헤제입니다.

우리가 new를 호출하면 윈도우의 커널이 비어있는 메모리중에서 적당한 부분을 확보(예약)해서 넘겨 줍니다..
이 넘겨주는 값이 new의 리턴 값입니다.
    a= new int();
라고 하면 커널이 정수형 메모리를 확보(예약)하고 그 메모리의 번지를 리턴합니다. 이 리턴값이 new의 리턴 값이고 a에 저장되는 값입니다.

delete a 라고하면 new가 확보한 메모리를 헤제(예약 취소)하는것입니다. 다시 말해서 다른 프로그램에서 사용할 수 있게 메모리 영역이 필요없다고 커널에게 알리는 것입니다.
커널은 메모리 헤제 명령을 받으면 지정된 메모리를 다른 응용 프로그램에서 사용 할수 있는 상태로 만듭니다.

따라서 delete가 호출된 후에도 a에 NULL이 아닌값이 남아 있는것은 당연합니다.

그럼



열심 님이 쓰신 글 :
: 한 클래스에
: AA *a;
: 가 있습니다.
:
: 프로그램 중간에 잘 쓰다가 소멸자에서
:
: delete a;
: a = NULL;  (0)
:
: 하였습니다.
:
: 그런데 그 이후로도 a 에 이상한 값이 남습니다.
: 그 이후 코딩에 보면
: if (a != NULL) ...
: 이런 부분이 있는데. 여길 넘질 못해서 에러가 납니다.
: 도대체 어째서 이런 일이 있는거지요?
: AA등 소멸자에서 뭘 잘못해서 그런가요?
: 아시는 분 자세한 설명 좀 부탁드립니다.
: 도와주시면 정말 감사하겠습니다. 꾸벅 ^^

+ -

관련 글 리스트
35450 [급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요? 열심 826 2004/06/07
35464     Re:[급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요? 열심 984 2004/06/08
35474         Re:Re:[급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요? 김상면 954 2004/06/08
35455     Re:[급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요? Starlet 911 2004/06/07
35454     Re:[급] 고수님들, 부탁합니다~ 포인터 null로 셋팅하는데 왜 안되나요? 김상면 918 2004/06/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.