|
while(m_lList->Count)
: {
: delete (ST_DATA*)(m_lList->Items[0]);
: m_lList->Delete(0);
: }
:
: delete m_lList;
:
: ShowMessage(L"삭제 완료");
이부분을
for(int i = 0; i < m_IList->Count; i++)
{
ST_DATA *pstData = (ST_DATA *) m_IList->Items[i];
delete pstData;
}
delete m_IList;
로 바꿔보세요
MoveJ 님이 쓰신 글 :
: 안녕하세요. TList를 사용하는 중에 메모리 누수 문제가 있어서 질문드립니다.
:
: void __fastcall TForm3::Button1Click(TObject *Sender)
: {
: ST_DATA* pData;
:
: int i;
:
: m_lList = new TList();
:
: m_lList->Clear();
:
: for(i = 0; i < 10000; i++)
: {
: pData = (ST_DATA*)new ST_DATA;
:
: memset(pData, 0x00, sizeof(ST_DATA));
:
: m_lList->Add(pData);
: }
:
: ShowMessage(L"추가 완료");
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm3::Button2Click(TObject *Sender)
: {
: while(m_lList->Count)
: {
: delete (ST_DATA*)(m_lList->Items[0]);
: m_lList->Delete(0);
: }
:
: delete m_lList;
:
: ShowMessage(L"삭제 완료");
: }
: //---------------------------------------------------------------------------
:
: typedef struct _Data
: {
: bool bBool1;
: bool bBool2;
: int nInt1;
: DWORDLONG dwlDWORDLONG1;
: DWORDLONG dwlDWORDLONG2;
: DWORDLONG dwlDWORDLONG3;
: DWORDLONG dwlDWORDLONG4;
: }ST_DATA;
:
: 위 소스는 메모리 해지 테스트를 위해서 만든 샘플 코드 입니다.
:
: 위와 같이 프로그램을 구성하였는데 메모리가 떨어지지 않고 그대로네요.
:
: 혹시 문제점을 아신다면 알려주시면 감사하겠습니다.
|