今天编程时遇到一个很纳闷的问题,一个指针中的内容在传递过程中值突然丢失了。
同时在程序编译的时候也有一个warning
其具体信息如下:
warning: function returns address of local variable [enabled by default]
警告信息表示,函数返回了一个局部变量地址,这就是造成返回值丢失的原因。
在C/C++编程时不要返回局部对象的引用或指针,因为函数完成后,它所占的存储空间也随之释放掉。因此,函数终止意味着局部变量的引用将指向不再有效的内存区域。
函数返回地址都是不安全的,因为函数结束后,函数的内存都会变释放,因此这个地址其他运用程序也可以用到,会被修改。
只要返回的是个地址,就不安全。当操作系统把这个内存分配给其他程序时,就会被修改。