안녕하세요 만해 입니다.
제가 올린 소스에도 나오듯이
여러번의 동적 생성이 나오는데
그게 잘 안지워 지네요
그래서 테스트 모듈을 써봤는데
이게 다음과 같은 소스 입니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
vector<TObjectType> ObjVector;
for ( int i = 0 ; i < 100000 ; i ++ )
{
TObjectType temp;
temp.Url.assign("
http://www.chosun.com");
temp.Depth = 1;
temp.Count = 1;
ObjVector.push_back(temp);
}
ObjVector.erase(ObjVector.begin(),ObjVector.end());
ObjVector.clear();
vector<TObjectType>(ObjVector).swap(ObjVector);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
vector<TObjectType*> ObjVector;
for ( int i = 0 ; i < 100000 ; i ++ )
{
TObjectType* temp = new TObjectType;
temp->Url.assign("
http://www.chosun.com");
temp->Depth = 1;
temp->Count = 1;
ObjVector.push_back(temp);
}
for ( int i = 0 ; i <ObjVector.size() ; i ++ )
{
TObjectType* temp = ObjVector[i];
delete temp;
}
ObjVector.erase(ObjVector.begin(),ObjVector.end());
vector<TObjectType*>(ObjVector).swap(ObjVector);
ObjVector.clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TList * List = new TList;
for ( int i = 0 ; i < 100000 ; i ++ )
{
TObjectType *temp = new TObjectType;
temp->Url.assign("
http://www.chosun.com");
temp->Depth = 1;
temp->Count = 1;
List->Add((void*)temp);
}
for ( int i = List->Count-1 ; i > -1 ; i -- )
{
TObjectType *temp = (TObjectType*)List->Items[i];
delete temp;
List->Delete(i);
}
}
//---------------------------------------------------------------------------
Vector하고 TList하고 테스트 해봤는데
세개다 원래의 메모리로 안 내려가네요
다만 프로그램이 종료될때 메모리 할당된데 싹 내려 가네요
제가 올린 소스가 틀린건지 아니면 다른 방법이 있는건지
고수님들의 조언 바랍니다.