이 코드로 인해 메모리 누수가 발생하는 이유는 무엇입니까? 기본 클래스 소멸자가 "가상"으로 만들어지면 메모리 누수 문제가 해결 될 것이라고합니다. 왜?파생 클래스에 대한 포인터로 인한 메모리 누수가 발생했습니다.
class base {
public:
base() { ptr = new int[1024]; }
~base() { delete [] ptr; }
private:
double *ptr;
};
class der : public base {
public:
der() { name = new char[1024]; }
~der() { delete [] name; }
private:
char *name;
};
int main() {
base* aPointer = new derived;
delete aPointer;
return 0;
}
http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors?lq=1 – chris
"가상 소멸자"에 대해서만 google을 사용하면 이유에 대한 많은 정보를 찾을 수 있습니다. 그 뒤에. 방대한 양의 정보를 사용할 수 있어야한다는 것이 C++의 근본적인 문제입니다. –