Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;释放内存的析构函数 #包括 #包括 使用名称空间std; 阶级人{ 私人: 国际*年龄; 字符串*名称; 公众: 人类(字符串在名称中,国际通用) { name=新字符串; 年龄=新整数; *name=iname; *年龄=iage; } 无效显示() { CUT< P>你指的是已经被删除的内存,这就是C++中未定义的行为。_C++ - Fatal编程技术网

C++;释放内存的析构函数 #包括 #包括 使用名称空间std; 阶级人{ 私人: 国际*年龄; 字符串*名称; 公众: 人类(字符串在名称中,国际通用) { name=新字符串; 年龄=新整数; *name=iname; *年龄=iage; } 无效显示() { CUT< P>你指的是已经被删除的内存,这就是C++中未定义的行为。

C++;释放内存的析构函数 #包括 #包括 使用名称空间std; 阶级人{ 私人: 国际*年龄; 字符串*名称; 公众: 人类(字符串在名称中,国际通用) { name=新字符串; 年龄=新整数; *name=iname; *年龄=iage; } 无效显示() { CUT< P>你指的是已经被删除的内存,这就是C++中未定义的行为。,c++,C++,C++在将其从堆中删除时,不会将内存设置为零。 你指的是已经删除的内存,这就是C++中所谓的未定义行为。< /P> 当您从堆中删除内存时,C++不会将其设置为零。析构函数正在做它应该做的事情,但是在您执行deleted后使用指针pallavi的行为是未定义的 编译器可以做任何事情,包括打印一些对象。它也可能吃掉你的猫 大概你只是在课堂上使用指针成员作为练习。这样做“在现实中”对于int和std::string来说是毫无意义的,甚至是有害的:类的实例不再是简单的可复制的。析构函数正在做它应该做的事

C++在将其从堆中删除时,不会将内存设置为零。

你指的是已经删除的内存,这就是C++中所谓的未定义行为。< /P>
当您从堆中删除内存时,C++不会将其设置为零。

析构函数正在做它应该做的事情,但是在您执行
delete
d后使用指针
pallavi
的行为是未定义的

编译器可以做任何事情,包括打印一些对象。它也可能吃掉你的猫


大概你只是在课堂上使用指针成员作为练习。这样做“在现实中”对于
int
std::string
来说是毫无意义的,甚至是有害的:类的实例不再是简单的可复制的。

析构函数正在做它应该做的事情,但是在
删除
d之后使用指针的行为是未定义的

编译器可以做任何事情,包括打印一些对象。它也可能吃掉你的猫


大概你只是在课堂上使用指针成员作为练习。这样做“在现实中”对于
int
std::string
来说是毫无意义的,甚至是有害的:类的实例不再是可复制的。

删除后,ptr指向的对象处于未定义状态。在再次将有效对象的地址分配给ptr之前,访问它是未定义的beavior。

删除后,对象点ptr的ted处于未定义状态。在再次为ptr分配有效对象的地址之前,访问它是未定义的beavior。

另外,您不需要为成员变量使用指针,只需将它们键入
int
string
。如果您刚刚开始开发,并且使用的编译器不太旧,请查看p除了可能的重复之外,您不需要为您的成员变量使用指针,只需将它们键入
int
string
。如果您刚刚开始开发,并且使用不太旧的编译器,请查看可能的重复
#include<iostream>
#include<string>
using namespace std;

class Human{
    private:
       int *age;
       string *name;
    public:
        Human(string iname,int iage)
        {
            name=new string;
            age=new int;
            *name=iname;
            *age=iage;          
        }
        void display()
        {
            cout<<"Name "<<*name<<endl<<"Age "<<*age<<endl;
        }
        ~Human(){
            delete name;
            delete age;
            cout<<"Released all memories"<<endl;
        }

};
int main()
{
    Human *pallavi= new Human("pallavi",21);
    pallavi->display();
    delete pallavi;
    pallavi->display();
    return 0;
}