제 현재 개발환경은 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)인 상태로 되돌리는게 아닌가요? 아니면 코드상에 문제가 있는 걸까요?
|