一道C++难解的题,内存地址与类造成假死

#include <iostream>

using namespace std;

class Human
{
public:
        int x;
        void hi(){cout<<"XXXXXX"<<endl;}
        void ho()
        {
                cout<<x<<endl;
                int* q = new int;
                *q = 3;
                x = (int)q;
        }
        void hq()
        {        int* q = new int;
                *q = 3;
                //这里 能不能 给 x变量 绑定一个地址。这个 地址是 q的创建的

                cout<<"我自己都不知道我自己应该在哪里        "<<*q<<"  "<<q<<endl;
                delete q;
                

        }
        Human(): x(1)
        {
                cout<<"我应该在不出现的吧?  "<<&x<<endl;
        }
        ~Human()
        {
                delete (int* )x;
        }
};
int main()
{
        Human* p = NULL;
        
        p->hi();
        p->hq();
        //p->ho(); //直接死

        p = new Human;
        p->ho(); //前面执行直接死
        p->hq();

        return 0;
}

可以让主函数Main里面的 //p->ho(); //直接死
这里的代码正常运行

Human* p = NULL;
这个类是 NULL 空的。
但是代码都是在内存中的。
所以
p->hi();
p->hq();
没有问题。
那么调用p->ho();
会产生一个问题。此时 的int x还没有地址。我想给这个x 创建一个内存地址 让他的调用没问题。

在我看来,嵌入汇编是我想到的一个解决方法,asm关键字, 详细用法《 https://blog.csdn.net/Varible/article/details/104269494汇编知识网上