gpt4 book ai didi

c - 当我在C中声明一个结构的指针时,内存是如何分配的

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:41 25 4
gpt4 key购买 nike

我想知道当我使用指针声明我的结构时内存是如何分配的。

struct car{
int id;
int age;
};

所以如果我是对的,对于大多数编译器来说,结构大小是 8 字节,因为 int(4B) x 2 = 8B。

现在我不明白这一点。

//1
struct car *ptr = malloc(sizeof(struct car));
//2
char buffer[4090];
struct car *ptr = buffer;
//3
struct car *ptr = malloc(1);

在这 3 种情况下,*ptr 的大小为 8 sizeof(*ptr)。为什么?它在内存中是如何表示的?

最佳答案

sizeof(something) 在内存中没有表示。它是在编译时确定的。

由于 ptr 被声明为 car*sizeof(*ptr) 是编译器的 car 的大小结构.

这不取决于 ptr 的值或它指向的位置,即使它为 null。

另一方面,sizeof(ptr)(没有星号)是指针的大小,这取决于系统(即 64 位 Win 上的 8 字节)。在这种情况下,pointee 的类型无关紧要。

关于c - 当我在C中声明一个结构的指针时,内存是如何分配的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41204417/

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