繁体   English   中英

C中的错误malloc

[英]error malloc in C

我不确定这是怎么回事,它说不兼容的隐式内置在func中,我确实包含了string.h文件,但它仍然给我一个错误

 int name_read;
 int name_bytes = 100;
 char *name;

 printf("Please enter name:\n");
 name = (char *)malloc(name_bytes + 1);
 name_read = getline(&name, &name_bytes, stdin);

您需要#include <stdlib.h>来获取malloc的正确声明。

另外sizeof(name_bytes) + 1看起来很可疑; 这将为您提供5个字节的内存,而不是您可能期望的101个字节。

最后,由于malloc返回void* ,因此无需在mallocmalloc其返回值。

#include <stdlib.h>
/* ... */
int name_bytes = 100;
char* name = malloc(name_bytes + 1);

要解决该错误,请确保已包含stdlib.h。 另外,您应该注意sizeof返回变量/类型的大小,而不是分配给变量的值。 因此您的sizeof(name_bytes)将返回整数的大小(以字节为单位),而不是100

我认为您实际上需要name = malloc(name_bytes + 1); (假设您要为名称分配101个字节)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM