|
만약에 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 를 하는건지... 좀 알려 주시겠습니까?
|