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
[64987] Re:Deque(char *) 사용시 문제....
송신영 [palindrome] 1526 읽음    2011-08-14 00:04
char ch[] = {'A','B','C','D'};
이렇게 선언한 값을 큐에 넣으면 함수가 끝나버리면 지역 변수기 때문에 스택에서 값이 사라지죠.
그리고 큐는 단지 값이 존재하던 예전의 주소 값만 가지고 있게 되는 것 같습니다.

char *ch = new char[5];
이런 식으로 new로 선언하고 큐에 넣으면 메모리가 힙에 잡혀서
함수가 끝나도 값이 사라지지 않을 것이고
나중에 포인터 꺼내서 delete[] ch 로 삭제하면 될것 같은데...
맞을라나.. ㅎ


포인터 님이 쓰신 글 :
: 데큐를 이용해 프로그램을 만들고 있는데요...
:
: char * 라서 그런지...
:
: 함수 1에서 push_back(); 하고
:
: 함수 2에서 front(); 하면... 이상한 값들이 나오게 됩니다....
:
: 함수 1에서 함수 끝나는 동시에 char*가 소멸되어 push_back() 했던 값 들이 같이 소멸되서 그런건지..
:
: 아니면 제가 잘못 이해하고 있는건지... 도와주시면 감사하겠습니다...
:
: ex)
: .h
: deque<char*> dq;
:
: .cpp
: // 함수 1
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     char ch[] = {'A','B','C','D'};
:     dq.push_back(ch);
: }
:
: // 함수 2
: void __fastcall TForm1::Button2Click(TObject *Sender)
: {
:     char* ch = dq.front();
:     Memo1->Lines->Add(ch);
: }

+ -

관련 글 리스트
64985 Deque(char *) 사용시 문제.... 포인터 1513 2011/08/12
64987     Re:Deque(char *) 사용시 문제.... 송신영 1526 2011/08/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.