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
[20891] Re:어떻게 delete 를 하는건지요....?
아제나 [] 941 읽음    2002-08-19 23:52

만약에 data에 넣은 변수가...

new로 할당한 값이라면

delete listView->Items->Item[i]->Data;

요렇게 지워주셔야 하고요.

malloc으로 할당한 값이라면

free(listView->Items->Item[i]->Data);

요렇게 지워주셔야 합니다.

배드 파라미터 문제는...

NULL값을 넣으셔서 생기는 문제 입니다.

NULL 안넣어도 문제가 안생깁니다.

그리고 논리적 버그가 하나 더 있는데요.

저렇게 for 문을 돌리면 i 값은 계속 증가하는데

Count는 Delete됨에 따라 계속 줄어들죠.

결국 실제 데이터가 반 밖에 지워지지 않습니다.

while( listView->Items->Count > 0 )
{
  delete listView->Items->Item[0]->Data;
         listView->Items->Item[0]->Delete();
}



barralm P SeungHun 님이 쓰신 글 :
: 저도 맨처음에는 delete 하면 될줄알고..
:
: for(int i=0;i<listView->Items->Count;i++)
: {
:     listView->Items->Item[i]->Delete();
: }
: 이렇게 해봤는데 종료시 코드가드에서 leak 에러가 나더군요..
:
: 그래서
: for(int i=0;i<listView->Items->Count;i++)
: {
:     delete listView->Items->Item[i]->Data;
:     listView->Items->Item[i]->Data = NULL;
:     listView->Items->Item[i]->Delete();
: }
: 이렇게 하니까 앞에 말씀드린데로.. 배드 파라미터라고 나옵니다...
:
: 어떻게 delete 를 하는건지... 좀 알려 주시겠습니까?

+ -

관련 글 리스트
20876 TTreeView 나 TListView에서 Item->Data 삭제는 어떻게 해야하나요? barralm P SeungHun 1057 2002/08/19
20881     Re:TTreeView 나 TListView에서 Item->Data 삭제는 어떻게 해야하나요? 아제나 1070 2002/08/19
20885         어떻게 delete 를 하는건지요....? barralm P SeungHun 761 2002/08/19
20891             Re:어떻게 delete 를 하는건지요....? 아제나 941 2002/08/19
20892                 답변 고맙습니다. barralm P SeungHun 716 2002/08/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.