wdkbook 2020-03-16 20:51 采纳率: 100%
浏览 222
已采纳

一道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 创建一个内存地址 让他的调用没问题。

  • 写回答

1条回答 默认 最新

  • Varible 2020-03-16 21:47
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算