笔者的CSDN博客用来记录研一暑假开始的纯机械转行之路,目标是嵌入式软件工程师。
数据结构的学习跟随郝斌老师的《数据结构入门》,此篇博客为《P10_跨函数使用内存讲解及其示例》的知识点总结。
正文开始
首先,什么是跨函数使用内存?个人理解是跨过某函数去使用其调用的内存。举个例子[1]:
#include<stdio.h>
int function()
{
int j = 20;
return j;
}
int main()
{
int i = 10;
i = function();
printf("i = %d\n",i);
return 0;
}
如果main函数在调用function()的时候,能够使用j变量所开辟的内存,则称为跨函数使用内存。
然而上述例子能达成目标吗?
不能。
为什么呢?
因为在function()执行体中,开辟了一份内存给变量 j 使用,而由于 j 是局部变量,局部变量的生命周期会随着函数调用的结束而结束。换言之,编译器读到 i = function()之后,函数调用完毕,变量 j 的内存就会被自动释放,从而跨函数使用内存失败。
问题就出在局部变量的生命周期