이 코드가 있다고 가정 해보자 :생성자에서 예외가 발생하면 객체에 할당 된 메모리가 자동으로 삭제됩니까?
class CFoo
{
public:
CFoo()
{
iBar = new CBar();
}
private:
CBar* iBar;
};
....
CFoo* foo = new CFoo();
위의 라인이 실행될 때, 첫 번째 메모리는 CFoo 객체를 담기 위해 할당 될 것이다. 그러나 새로운 CBar() 라인이 메모리 부족으로 인해 예외를 던지면 시스템은 이전에 CFoo 객체에 할당되었던 메모리를 자동으로 할당 해제합니까? 필자는 그럴 필요가 있다고 말하지만 명시 적 참조는 찾을 수 없습니다. 그것이 foo에 할당되지 않았 으면 어떻게 코더에 의해 메모리가 할당 해제 될 수 있습니까?
참조 : http://stackoverflow.com/questions/810839/throwing-exceptions-from-constructors 및 http://stackoverflow.com/questions/ 1230423/c-handle-resources-if-constructors-may-throw-exceptions-faq-17 및 http://stackoverflow.com/questions/1197566/is-it-ever-not-safe-to- throw-an-exception-in-a-constructor – user470379
예외가있는 경우 메모리가 할당되지 않았다고 생각합니다. – Elalfer
이전 5 가지 질문에 대한 대답 중 일부를 받아 들일 수 있습니다. –