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
[24605] Re:Re:Re:Re:Re:Re:[질문]Queue사용에 대해서..
조준회 [] 945 읽음    2003-03-04 17:59
: for(int i = 1; i <= 10 ; i++)
:   {
:      Log->n = i;
:      Log->msg.sprintf("%04d",i);
:      que->Push(Log);
:   }


위소스를 잘생각해보세요..
포인터는 실제 내용을 저장할수 있는 공간이 없습니다.
다만 저장할 수 있는 곳을 가리키고(POINT) 있을 뿐입니다.

제가 좀전에 알려드린 소스중에서 한줄이 빠져있습니다.

위 소스처럼 하면..

Log 포인터는 항상 한곳만 Point하게 됩니다.

그래서 처음에 1을 넣는곳과 두번째에 2를 넣는곳은 같은 곳이됩니다.
이런식으로 맨 마지막에 해당이 되므로 제일 마지막에 변경한 값만
남아 있게 됩니다.

마찬가지로..
Pop 시킬때는..
Pop후 메모리 해제가 일어나는데..
1~10까지의 내용이 모두 같은곳을 Point하고 있으므로..

그래서 첫번째 pop후엔 메모리 해제가 일어나서..
두번째 pop부터는 유효하지 않은 곳을 참고하게됩니다.

따라서 메모리 참조 오류가 발생하게 됩니다.

빠져있는 부분은 new로해서.. 메모리를 할당시켜주는 부분입니다.


하안인 님이 쓰신 글 :
: 하안인 님이 쓰신 글 :
: : 답변 감사드립니다.
: :
: : 근데
: : [Link Fatal error]unable to open file "MMTOOLS_C5.LIB'
: :
: : 빌더에서 탐색해봐도 위 파일은 없던데요.
: : 어떻게 하면 되는건 가요.
: :
:
: 다시 새로 프로그램해서 실행하니 링크에러는 없는데
: 퀴에 집어넌 내용이
: for(int i = 1; i <= 10 ; i++)
:   {
:      Log->n = i;
:      Log->msg.sprintf("%04d",i);
:      que->Push(Log);
:   }
:
: 로 집어넣었으니 n값이 1에서 10까지 나와야 하는데
: 10개값 모두 10으로만 나옵니다.
:
: //출력하는 부분
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:   while (que->Count() > 0)
:   {
:      Log2 = (TLOGBUF*)que->Pop();
:     
:      ListBox1->Items->Add(IntToStr(Log2->n)+String("--")+Log2->msg);
:   }
: }
:
: 그리고 종료를 하면 메모리해제 Log2에서 에러가 발생되는 데요
: Log의 메모리는 정상적으로 제거되는것 같은데..
: void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
: {
:   delete Log;
:   delete Log2; //
:   delete que;
: }
:
:

+ -

관련 글 리스트
24589 [질문]Queue사용에 대해서.. 하안인 895 2003/03/04
24595     Re:[질문]Queue사용에 대해서.. 조준회 903 2003/03/04
24597         Re:Re:[질문]Queue사용에 대해서.. 하안인 794 2003/03/04
24599             Re:Re:Re:[질문]Queue사용에 대해서.. 조준회 895 2003/03/04
24600                 Re:Re:Re:Re:[질문]Queue사용에 대해서.. 하안인 767 2003/03/04
24601                     Re:Re:Re:Re:Re:[질문]Queue사용에 대해서.. 하안인 787 2003/03/04
24605                         Re:Re:Re:Re:Re:Re:[질문]Queue사용에 대해서.. 조준회 945 2003/03/04
24607                             대단히 감사합니다. - 내용무- 하안인 684 2003/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.