Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向结构中的指针的calloc()不';不要在叮当声中工作 我在C中实现了一个队列。考虑下面的代码: #包括 #包括 typedef结构队列; 结构队列{ 内伦; int头; 内尾; int*数组; }; int main(int argc,char*argv[argc+1]){ int len=12; 队列*q=malloc(sizeof(q)); *q=(队列){ .array=calloc(len,sizeof(int)), .len=len, }; 对于(int i=0;iarray[i]); } 自由(q->数组); 免费(q); 返回退出成功; }_C_Malloc_Clang_Calloc - Fatal编程技术网

指向结构中的指针的calloc()不';不要在叮当声中工作 我在C中实现了一个队列。考虑下面的代码: #包括 #包括 typedef结构队列; 结构队列{ 内伦; int头; 内尾; int*数组; }; int main(int argc,char*argv[argc+1]){ int len=12; 队列*q=malloc(sizeof(q)); *q=(队列){ .array=calloc(len,sizeof(int)), .len=len, }; 对于(int i=0;iarray[i]); } 自由(q->数组); 免费(q); 返回退出成功; }

指向结构中的指针的calloc()不';不要在叮当声中工作 我在C中实现了一个队列。考虑下面的代码: #包括 #包括 typedef结构队列; 结构队列{ 内伦; int头; 内尾; int*数组; }; int main(int argc,char*argv[argc+1]){ int len=12; 队列*q=malloc(sizeof(q)); *q=(队列){ .array=calloc(len,sizeof(int)), .len=len, }; 对于(int i=0;iarray[i]); } 自由(q->数组); 免费(q); 返回退出成功; },c,malloc,clang,calloc,C,Malloc,Clang,Calloc,我使用calloc()初始化结构中的数组,但数组的某些值不是零 $clang-Wall-O0-g-o queue.o queue.c&&./queue.o 952118112 32728 0 0 0 0 0 0 0 0 0 0 这是为什么?这是内存分配 queue* q = malloc(sizeof(q)); 这是错误的。它只为指针而不是队列类型的对象分配内存 改写 queue* q = malloc(sizeof(*q)); 您需要sizeof*q,而不是sizeof q。第一个生成对

我使用calloc()初始化结构中的数组,但数组的某些值不是零

$clang-Wall-O0-g-o queue.o queue.c&&./queue.o
952118112
32728
0
0
0
0
0
0
0
0
0
0
这是为什么?

这是内存分配

queue* q = malloc(sizeof(q));
这是错误的。它只为指针而不是队列类型的对象分配内存

改写

queue* q = malloc(sizeof(*q));

您需要
sizeof*q
,而不是
sizeof q
。第一个生成对象的大小,第二个生成指针的大小。看见