c/c++ 函数中局部变量的返回

来源:互联网 发布:mac book能下载爱剪辑 编辑:程序博客网 时间:2024/05/23 02:07

对于函数中的局部变量是在栈中的,当函数返回的时候,会被自动回收

那么函数所返回的局部变量,其实是值拷贝,而对于局部指针的值拷贝,

即是这个栈中的地址,因为当这个方法返回的时候,这个栈中的地址已经被回收了

因此,再想去进行相应的数据访问,那就会变错。因此如果不想出现这种情况。

那么就应该保证返回的变量不是指向栈内存的指针。


 那如果返回的指针指向的是堆内存,又会怎么样?

      这样的使用是没有问题的,在函数内new空间,在函数外delete空间。但是这样并不是一种好的编程风格,尽量在同一个作用域内进行new和delete操作,否则还要调用者手动进行内存的释放,试问这样的接口是不是很烂。如果确实需要这样做,那就传指针进去吧!


结构体局部变量返回:

当返回的值是结构体时,此时是将栈中的结构体变量进行复制,并且返回给调用函数的位置,而栈中的结构体还是会被回收的。

转载地址:http://blog.csdn.net/jackystudio/article/details/11523353

结构体返回值转载地址:http://blog.csdn.net/tietao/article/details/7257835

0 0
原创粉丝点击