如何调试Cpp程序中的destruct函数

How to debug destruct function in Cpp program

代码

我正在尝试调试以下代码:

#include <iostream>

class wine
{
public:
    //wines name/brand
    char *name;
    //wines age
    int age;
    //in liters
    long double volume;
    //def construct
    wine();
    //construct
    wine(char *name, int age, long double volume) : name(name), age(age), volume(volume) {};
    //destruckt
    ~wine();
};

wine::wine() {}
wine::~wine() 
{
    delete &name;
    delete &age;
    delete &volume;
}

int main()
{
    char a[5] = { 'G','a','l','l','o' };
    wine old(a, 50, 1);
    for(int i = 0; i < 5; i++)
    {
        std::cout << a[i];
    }
    while (!std::cin.ignore());
    delete &old;
    return 1;
}

我在调试时观察到的是 destruct 函数是错误的,但我没有实现其他任何东西

您不使用 new 进行任何动态内存分配,因此您也不需要 delete。删除 delete &old;。当 old 超出范围(在 main 函数的末尾)时,将自动调用析构函数。

well what i have observed while debugin is that the destruct function is the error

没错。您的 wine class 不包含任何动态分配的内容,因此不需要使用 delete 删除任何内容。然而你的析构函数试图删除它的成员变量。

删除析构函数中的那些 delete 调用。如果你愿意,你可以把析构函数作为一个整体去掉(这样 wine 就会留下一个没有任何特殊作用的默认析构函数)。