打印
[软件资料]

三种类型的内存使用

[复制链接]
178|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AdaMaYun|  楼主 | 2024-3-12 08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

自动存储:用于保存局部变量。当函数被调用时,就会创建一个新的自动存储区域,并在函数返回结果时删除。只有返回值会被保留,并被复制到调用它的函数的自动存储中。这意味着,返回一个指向局部变量的指针是不安全的,因为底层数据会被默默删除。自动存储通常被称为“栈”。


分配的存储:运行malloc() 会返回的内存类型,这种内存会一直保留,直到被 free() 函数释放,所以可以被传递到任何地方,包括返回给上级调用函数。通常被称为“堆”。

静态存储:在程序的整个生命周期内有效。在进程启动时分配,全局变量都存储在这里。

如果想通过一个函数“返回”内存,不必通过调用 malloc,可以直接将一个指向本地数据的指针传递给函数:

void getData(int *data) {
data[0] = 1;
data[1] = 4;
data[2] = 9;
}
void main() {
int data[3];
getData(data);
printf("%d\n", data[1]);
}

使用特权

评论回复
沙发
小小蚂蚁举千斤| | 2024-3-18 10:49 | 只看该作者
三种类型内存使用比较多,数据传递也很容易出错

使用特权

评论回复
板凳
小夏天的大西瓜| | 2024-3-19 20:59 | 只看该作者
运行malloc() 会返回的内存类型,这种内存会一直保留,直到被 free() 函数释放,所以可以被传递到任何地方,包括返回给上级调用函数。通常被称为“堆”。

使用特权

评论回复
地板
中国龙芯CDX| | 2024-3-21 14:41 | 只看该作者
自动存储使用的比较多

使用特权

评论回复
5
jf101| | 2024-3-22 12:30 | 只看该作者
分配的存储,运行malloc() 会返回的内存类型,这种内存会一直保留

使用特权

评论回复
6
szt1993| | 2024-3-25 15:16 | 只看该作者
静态存储在程序的整个生命周期内有效。在进程启动时分配,全局变量都存储在这里。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1470

帖子

3

粉丝