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

纵饮孤独 提交于 2019-12-06 08:38:00

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

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

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

首先

 

 

 然后内存释放

 

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

但是vs2019运行如下:

 

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

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

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!