[완료]객체 메모리 해제 질문...
글쓴이: nextxyz / 작성시간: 일, 2011/02/20 - 5:39오후
안녕하세요. 기본이 제대로 갖춰지지 않은 대학원생입니다...-_- ;;
Qt(C++) 작성중인 프로그램이 있는데요..
소멸자에서 포인터의 메모리 반환할때,
if( instance)
delete instance
이런식으로 많이 사용하지 않나요? 프로그램 종료시에 에러가 나서 살펴보았더니..
instance = new classname; 이렇게 메모리 할당을 한 여부에 상관없이 if(instance) 로 들어오기도 하고 안들어오기도 하던데..
제가 무엇을 잘못 알고 있는 것 같습니다..^^;;
코드로 설명드리자면,,
class mem { public: int a; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); mem* b; qDebug() << "start"; if (b) qDebug() << "exist b before make the object"; b = new mem; if(b) qDebug() << "exist b after make the object"; return a.exec(); }
이 두가지 경우 모두 if 문 안으로 들어옵니다.
if(b !=NULL) 로 해도 모두 if 문 안으로 들어오구요..,
제가 어디를 잘못 알고 있는 걸까요 ㅠㅠ
Forums:
지역변수가 어떤값으로 초기화 되는지, 매번 그것으로
지역변수가 어떤값으로 초기화 되는지, 매번 그것으로 초기화 되는지 한번 알아보시죠.
한번
mem* b = NULL;
로 해보세요.
감사
제가 초기화를 안해서 그렇군요..ㅠㅠ 기초부족을 다시 깨닫게 되는군요... 감사합니다!
^-^
댓글 달기