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
[74378] Re:new와 delete에 관해 질문이 있습니다.(자답)
니시엔 [hykim5] 3704 읽음    2017-05-29 16:20
아 delete를 한다고 해서 포인터 변수까지 정리되는게 아니었군요...포인터변수는 NULL로 초기화해주지않는 이상 메모리주소값은 갖고 가네요...단지 delete를 통해 메모리 해제만 할뿐...
니시엔 님이 쓰신 글 :
: 제 현재 개발환경은 RAD Studio 10.1 Berlin(이하 베를린) 입니다.
: void __fastcall TFmMain::Button1Click(TObject *Sender)
: {
:     list=new TList();
:     Chart_Series* series1 = new Chart_Series;//이부분(이하1번)과
:     series1->Data = new double[100];
:     for(int i = 0;i<100;i++){
:         series1->Data[i]=i*0.1;
:     }
:     list->Add(series1);
:
:     int count = 100;
:     TChart* chart = FmMain->Chart1;
:
:     AddChartData(chart,list,count);

:     delete[] series1->Data;
:
:     delete series1;//이 부분(이하 2번)
:
:     series1->SeriesName="Testing";//이 부분(이하 3번)
:     FmMain->Button1->Enabled=false;
:  
: }struct schartSeries{
:     double *Data;
:     AnsiString SeriesName;
: }typedef Chart_Series;
: 현재 TChart를 활용하여 그래프 그리는 기능을 수행하는 함수를 제작중입니다.
: 여기서 질문드릴 부분은 코드상에 new 부분과 delete 부분입니다. 베를린에 Break point기능을 통해 series1의 상태변화를 Watch List를 통해 지켜봤습니다. 처음 1번부분에선 series1은 아무런 값을 갖고있지않은 NULL이었습니다. 그후에 1번 부분 후에 series1의 주소값은  02385D00이되었습니다. 그런데 2번 부분에서 series1을 delete했음에도 Watch List상에 series1 주소값인 02385D00이 그대로 표시되고 3번부분의 기능이 수행되는게 보이더군요. delete를 수행하면 new할때 할당한 메모리를 해제하여 원래상태(NULL)인 상태로 되돌리는게 아닌가요? 아니면 코드상에 문제가 있는 걸까요?

+ -

관련 글 리스트
74376 new와 delete에 관해 질문이 있습니다. 니시엔 3585 2017/05/29
74378     Re:new와 delete에 관해 질문이 있습니다.(자답) 니시엔 3704 2017/05/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.