当函数返回一个局部变量的指针问题,内存是否被释放

在学习c/c++的时候,我遇到了一个让我思考良久的问题,当一个自定义函数返回一个局部变量的指针时是否是个野指针呢?对此,我讲一下我的理解

按照正常的理解,当一个函数运行完毕后会使其内存释放,这就产生了一个问题。当一个函数里面有一个局部变量时,使一个指针指向这个变量的空间,最后这个空间被释放,然后指针

变为野指针,即这种理解:(注:这是错误理解

首先

 然后内存释放

如果按照这样的逻辑,p定是个乱码

但是vs2019运行如下:

 其实真实原因是,我们理解的内存释放,并不是真正意义上的内存释放,而是表示这个空间可以被其他内存使用,而其值仍存在,并不是内存里的东西直接就没了,

但返回一个类似的指针是一个大忌,这种程序小,可能没有问题,但是在某些大项目中,若这样写就可能使数据内存出现问题。

原文地址:https://www.cnblogs.com/Qsir10/p/11972807.html