gpt4 book ai didi

c - malloc时指针之间的区别

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

我通常让自己成为一个结构体,并为结构体分配内存,有时为结构体内部的缓冲区分配内存。像这样:

typedef struct A
{
char *buffer;
int size;
} A;

然后当我为结构分配内存时,我会这样做。 (我学会了不要在 SO 上强制返回 malloc。)

X

A *a = malloc(sizeof(a));
a->buffer = malloc(10*sizeof(a->buffer));

这个X和Y有什么区别?

 A *a = malloc(sizeof(*a));
a->buffer = malloc(10*sizeof(a->buffer));

他们似乎在做同样的事情。

最佳答案

两者都不正确,第二个甚至无法编译。

你想要以下之一:

A * a = malloc(sizeof(A));    // repeat the type

// or:

A * a = malloc(sizeof *a); // be smart

然后:

a->size = 213;
a->buffer = malloc(a->size);

关于c - malloc时指针之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441687/

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