|
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);
: }
|