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
[70351] Re:Re:Re:TList 메모리 누수
송신영 [palindrome] 4169 읽음    2013-11-20 18:10
코드상에 문제는 없습니다.
메모리 변화를 쉽게 보려면 구조체 크기를 크게 만드세요.
int    nInt1;   -> int Int1[1000]; 정도로 변경해보면 메모리 변화 바로 볼 수 있습니다.
그리고 ShowMessage() 사용하지 마세요.
Message 창이 출력되면서 메모리 변화가 있습니다.
그리고 당연한 거지만 Button1누르고 Buttton2 누르고 한번씩 한건 맞으시죠?
만약 Button1만 여러번 누르면 당근 메모리 누수 발생합니다.. 혹시나 하는 맘에..

버튼 몇번 누르고 메모리 체크하는건 확실하지 않구요.
타이머 사용하여 해당 버튼을 1시간 동안 번갈아 가벼 자동 클릭하도록
메크로 처럼 만들어서 테스트 해보세요.
처음 메모리와 이후 메모리 차이를 비교해 보시면됩니다.


이동재 님이 쓰신 글 :
: 적용은 해보았으나 아직 똑같은 상황이네요.(아직도 메모리가 해지되지 않습니다.)
:
: 빠른 답변 감사드립니다.
:
:  님이 쓰신 글 :
: : 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;
: : :
: : : 위 소스는 메모리 해지 테스트를 위해서 만든 샘플 코드 입니다.
: : :
: : : 위와 같이 프로그램을 구성하였는데 메모리가 떨어지지 않고 그대로네요.
: : :
: : : 혹시 문제점을 아신다면 알려주시면 감사하겠습니다.

+ -

관련 글 리스트
70346 TList 메모리 누수 MoveJ 6347 2013/11/20
70350     Re:TList 메모리 누수 라스코니 3620 2013/11/20
70348     Re:TList 메모리 누수 3773 2013/11/20
70349         Re:Re:TList 메모리 누수 이동재 4106 2013/11/20
70351             Re:Re:Re:TList 메모리 누수 송신영 4169 2013/11/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.