问题描述
在华为培训中碰到了下面的返回局部变量地址的代码。
|
|
但是在看The Practice of Programming的时候碰到了以下代码
|
|
第一段代码返回局部变量地址就发生了错误,但是第二段代码返回局部变量地址就正确
思路解析
第一段代码的返回了一个数组的地址,数组是在栈上分配的,当从函数退出时,
调用者拿到了数组的地址,但是栈上分配的数据已经回收
内存分配图
第二段代码返回的是一个在堆上分配的数据结构的地址,当从函数退出时,
调用者拿到了结构体的地址,但是堆上分配的数据还存在
内存分配图