gpt4 book ai didi

c - 使用结构进行动态内存分配

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

看来我并没有真正理解指针的内存分配是如何工作的。

简单示例:

我有一个结构,

    struct Friends{
char *firstname;
char *lastname;
};

如果我现在分配内存,它会得到我

    2x sizeof(char) = 2x 1Byte

但是,我需要的空闲内存不是取决于我填充了多少个字符吗?

例子:

    char array[10] needs 10x sizeof(char), 1byte for each character?

在我看到的每个地方,他们都在分配内存,然后才知道他们将用多少来填充结构。

最佳答案

I got a structure,

struct Friends{
char *firstname;
char *lastname;
};

if I do allocate memory now, it will get me

2x sizeof(char) = 2x 1Byte

您在这里分配的不是 char 的指针,而是 sizeof(char *)。根据系统的不同,它们分别为 4 个字节(32 位)或 8 个字节(64 位)。

因此,如果您想要指针指向的数据,则必须分配它,例如使用 malloc(),然后使用 free()

或者做类似的事情:

struct Friends{
char firstname[20];
char lastname[20];
};

但请确保您的字符串以 \0 char 结尾。

关于c - 使用结构进行动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640831/

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