멤버변수에 할당하기
글쓴이: pok / 작성시간: 일, 2005/11/20 - 10:56오후
class InputFile { public: ... Pcb* getPcbIndex(){return pPcbIndex_;} ... private: ... void makePcb(); Pcb* pPcbIndex_; ... }; void InputFile::makePcb(){ ... pPcbIndex_ = new Pcb[50]; ... }
makePcb()로 Pcb를 할당하고 멤버변수인 pPcbIndex_에 주소를 포인팅한후, getPcbIndex로 포인터를 받아서 사용하려합니다.
컴파일에서는 문제 없었는데, 세그멘트오류가 나는군요.
아마 new와 관련되서 뭔가를 놓치고 있는것 같은데 무엇이 문제일까요?
Forums:
InputFile* tmp = new InputFile; 이렇게 하셨다면
InputFile* tmp = new InputFile; 이렇게 하셨다면
tmp->makePcb();
Pcb* pcb = tmp->getPcbIndex()[0]; 이런식으로 사용하신게 맞는지요??
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
끙. 비계(scaffolding)를 하나 만들고 해보니까 잘되는군요.
끙. 비계(scaffolding)를 하나 만들고 해보니까 잘되는군요.
그런데
이런식으로 하면 makePcb()로 동적할당한 Pcb들이 없어지나요?
테스트해보니까 그냥 그대로 있는것 같은데, 이게 반환을 했는데 그대로 있는건지 아니면 반환을 안한건지 잘 모르겠네요.
A를 new로 할당하는 클래스와 delete하는 클래스가 다른경우, 일반적으로 어떻게 다루시는지도 궁금합니다.
poklog at http://poksion.cafe24.com/poklog/
[quote="쌀밥"]InputFile* tmp = new InputFi
말씀하신데로 하면 Pcb* 형태의 반환이 아니라고 컴파일이 되지 않군요.
Pcb* pcb = tmp->getPcbIndex(); 형태로 사용하였고
이렇게 사용한 의도는 tmp에서 만들어진 Pcb를 지금쓰고있는 곳에서 없애려했습니다(delete[] pcb;)
poklog at http://poksion.cafe24.com/poklog/
흐흐. valgrind로 확인해보니 반환해주는것 같군요.상태를 변경할
흐흐. valgrind로 확인해보니 반환해주는것 같군요.
상태를 변경할때 '상태플래그의 변경'을 많이 사용했었는데, 이렇게 생성을해서 상태 컨테이너를 변경시켜주는것도 좋은방법인것 같네요.
poklog at http://poksion.cafe24.com/poklog/
댓글 달기