![](/img/trans.png)
[英]What's the difference between malloc and not using malloc when creating pointers to nodes of a linked list?
[英]Difference between pointers when malloc
我通常将自己构造为一个结构,并为该结构分配内存,有时还为该结构内部的缓冲区分配内存。 像这样:
typedef struct A
{
char *buffer;
int size;
} A;
然后,当我为结构体分配内存时,我就这样做了。 (我学会了不在此处将malloc返回转换为SO。)
X
A *a = malloc(sizeof(a));
a->buffer = malloc(10*sizeof(a->buffer));
X和Y this有什么区别?
ÿ
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);
您应该进行类型转换(A *),因为calloc或malloc返回void *。
A *a=(a*)malloc(sizeof(A));
假设您要为缓冲区分配10个字符的内存
a->buffer=(char *)malloc(sizeof(char)*10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.