gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:48:51 25 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 创建对象。我只是在宣告它。我的结构的 sizeof 显示 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/

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