这个引用是否非法访问内存了?

时间:2021-01-28 18:15:53
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

class A
{

public:
    int a;
    int b;
    A(){a=0;b=0;}
    ~A(){}
    
};

int _tmain(int argc, _TCHAR* argv[])
{

    A* pObj=new A();
    
    A& obj=*pObj;
    
    delete pObj;
obj.a=10;

cin.get();
    return 0;
}

请问obj.a=10这句是否已经造成了非法内存访问

6 个解决方案

#1


内存都已经释放了,你再访问,当然非法了。
但不一定马上表现出来,具体看操作系统如何管理内存。

#2


内存已经释放,再给赋值访问已经没有意义了!

#3


释放过的内存应该重新申请

#4


肯定是了

#5


引用 1 楼 loaden 的回复:
内存都已经释放了,你再访问,当然非法了。
但不一定马上表现出来,具体看操作系统如何管理内存。

正解

#6


肯定是非法访问,但不一定马上报错

#1


内存都已经释放了,你再访问,当然非法了。
但不一定马上表现出来,具体看操作系统如何管理内存。

#2


内存已经释放,再给赋值访问已经没有意义了!

#3


释放过的内存应该重新申请

#4


肯定是了

#5


引用 1 楼 loaden 的回复:
内存都已经释放了,你再访问,当然非法了。
但不一定马上表现出来,具体看操作系统如何管理内存。

正解

#6


肯定是非法访问,但不一定马上报错