|
프로그램을 종료하고 난 후에 메모리가 반환이 안되는 건가요? 아니면 버튼 2를 눌렀을 때 메모리 반환이 안되는 건가요?
물론 프로그램을 종료하면 OS가 메모리를 찾아가기 때문에 해당 사항이 없을 것이고
OS 나 어플리케이션에서 delete 후에 바로 메모리를 OS에 반환을 하지 않는 것이 속도면 등에서 이익이라면 바로 반환하지 않을 수 있습니다.
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;
:
: 위 소스는 메모리 해지 테스트를 위해서 만든 샘플 코드 입니다.
:
: 위와 같이 프로그램을 구성하였는데 메모리가 떨어지지 않고 그대로네요.
:
: 혹시 문제점을 아신다면 알려주시면 감사하겠습니다.
|