gpt4 book ai didi

c - 局部静态和局部变量的内存分配

转载 作者:行者123 更新时间:2023-12-04 09:35:23 24 4
gpt4 key购买 nike

1.

void main(void)
{
int *ptr1;
ptr1 = (int *)malloc(..);
}

2.
void main(void)
{
static int *ptr2;
ptr2 = (int *)malloc(..);
}

请问ptr1&ptr2的内存分配是怎么做的?

最佳答案

ptr1指针本身在堆栈上分配。 ptr1指向堆上的内存。
ptr2指针本身是在程序启动时分配的(在调用 main 之前)并且是全局的,但恰好仅在 main 中可见。因为它是在其范围内声明的。 ptr2也指向堆上的内存。

申报ptr2 main 之外只会让它在它下面的所有函数中可见,但它的存储是一样的。

关于c - 局部静态和局部变量的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com