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

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

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

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

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

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


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

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


结构体局部变量返回:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值