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
[39339] Re:delete시 TList에서 배열내용이 사라지게 하지 않으려면..
[] 909 읽음    2005-03-02 19:05
HUMANLSH 님이 쓰신 글 :
: 다음과 같이 간단한 코딩작업을 했습니다.
:  IMAGEPACKET은 struct로 선언이 되어 있습니다.
:
: public:
:
:     TList* RecvList;
:
:      IMAGEPACKET* iPacket = new IMAGEPACKET;
:      iPacket->Pid = PID_IMG_FRAME_SEND;
:
:      switch(iPacket->Pid){
:        case PID_IMG_FRAME_SEND :
:             RecvList->Add(iPacket);
:             delete iPacket;
:             break;
:        default :
:             break;
:        }
:
:
:     위와 같은 코드가 진행됐을때 delete iPacket할때
:    Add한 RecvList의 내용이  삭제됩니다.
:     코드가 틀려 있나요? list내용이 그대로 있으면서 iPacket을 메모리에서
:     지울 수     다음과 같이 간단한 코딩작업을 했습니다.
:  IMAGEPACKET은 struct로 선언이 되어 있습니다.
:
: public:
:
:     TList* RecvList;
:
:
:      IMAGEPACKET* iPacket = new IMAGEPACKET;
:      iPacket->Pid = PID_IMG_FRAME_SEND;
:
:      switch(iPacket->Pid){
:        case PID_IMG_FRAME_SEND :
:             RecvList->Add(iPacket);
:             delete iPacket;
:             break;
:        default :
:             break;
:        }
:
:
:     위와 같은 코드가 진행됐을때 delete iPacket할때
:    Add한 RecvList의 내용이  삭제됩니다.
:     코드가 틀려 있나요? list내용이 그대로 있으면서 iPacket을 메모리에서
:     지울 수  있는 방법을 알려주세요..
:     부탁드립니다.

TList에 Add되는 것은 포인터입니다.
포인터는 메모리 상의 번지일뿐, 포인터 자체에는 위의 구조체 내부의 정보들을 가지고 있지 않습니다.
따라서, 포인터가 가리키고 있는 메모리를 free하면 해당 포인터가 가리키는 번지에는 더이상 원하는 정보가 유지되지 않는다고 봐야합니다.
결국, TList로는 님이 원하는 대로 할 수 없습니다.
std의 list를 사용하면 가능합니다.
즉, list에 포인터가 아닌 값으로 저장하면 됩니다.
list<IMAGEPACKET>의 형으로 컨테이너를 하나 만들어 그 곳에 넣으면 됩니다.

+ -

관련 글 리스트
39338 delete시 TList에서 배열내용이 사라지게 하지 않으려면.. HUMANLSH 772 2005/03/02
39339     Re:delete시 TList에서 배열내용이 사라지게 하지 않으려면.. 909 2005/03/02
39344         감사합니다.. 740 2005/03/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.