对于函数中的局部变量是在栈中的,当函数返回的时候,会被自动回收
那么函数所返回的局部变量,其实是值拷贝,而对于局部指针的值拷贝,
即是这个栈中的地址,因为当这个方法返回的时候,这个栈中的地址已经被回收了
因此,再想去进行相应的数据访问,那就会变错。因此如果不想出现这种情况。
那么就应该保证返回的变量不是指向栈内存的指针。
那如果返回的指针指向的是堆内存,又会怎么样?
这样的使用是没有问题的,在函数内new空间,在函数外delete空间。但是这样并不是一种好的编程风格,尽量在同一个作用域内进行new和delete操作,否则还要调用者手动进行内存的释放,试问这样的接口是不是很烂。如果确实需要这样做,那就传指针进去吧!
结构体局部变量返回:
当返回的值是结构体时,此时是将栈中的结构体变量进行复制,并且返回给调用函数的位置,而栈中的结构体还是会被回收的。
转载地址:http://blog.csdn.net/jackystudio/article/details/11523353
结构体返回值转载地址:http://blog.csdn.net/tietao/article/details/7257835