Buryool 发表于 2021-10-19 12:06:57

栈区函数释放时间问题

一个函数执行完之后会释放掉栈区的内存,那具体是什么时候释放掉的呢?是在return之前吗?
按照图片中老师的讲解,不要去返回局部变量的地址,因为局部变量会在函数执行完之后释放。但是按照图中代码,如果是在return语句后才释放,那a的地址不是就已经被p指针记录了吗?所以函数释放时间是在return语句之前?是这样吗?

人造人 发表于 2021-10-19 12:06:58

是在 return 之后释放的
指针 p 确实记录了 func 函数中的变量 a 的地址
但是 func 返回后,那个变量 a 就不存在了
p 记录了一个不存在的变量的地址

人造人 发表于 2021-10-19 12:33:16

第一次能打印是因为变量 a 的地方还没有分配给别的变量
页: [1]
查看完整版本: 栈区函数释放时间问题