gpt4 book ai didi

c - 不创建对象的内存分配

转载 作者:行者123 更新时间:2023-12-02 21:47:35 24 4
gpt4 key购买 nike

我写了这个非常小的程序。我想检查内存是否实际分配。

struct page_table{
int a[512];
};
typedef struct page_table pte;
int main(){
printf("size of pte = %d\n",sizeof(pte));
return 0;
}

我的问题是,我没有为 struct pte 创建对象。我只是声明一下。我的结构的大小显示 2048。但我想知道是否实际上会在物理内存中分配内存,因为我还没有为此结构创建对象。我正在使用 gcc 编译器。

最佳答案

不,由于示例中编写的结构,没有分配堆或堆栈内存。

printf 将在格式化和输出字符串时在内部分配内存,并且 sizeof(pte) 编译时数字可能在调用期间分配内存如果没有使用寄存器,则在堆栈上。

在 C 语言中,要在堆栈上分配内存:

int main()
{
struct page_table p;

return 0;
}

并且,在 C 中,要在堆上分配内存:

int main()
{
struct page_table* p = malloc(sizeof(struct page_table));
...
free(p);

return 0;
}

关于c - 不创建对象的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259415/

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