C中的错误malloc

时间:2011-03-26 01:50:49

标签: c malloc

我不确定这是错误的,它表示不兼容的隐式内置函数 好吧,我确实包含了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);

3 个答案:

答案 0 :(得分:8)

您需要#include <stdlib.h>才能获得malloc的正确声明。

同样sizeof(name_bytes) + 1看起来很腥;这将为您提供5个字节的内存,而不是您预期的101。

最后,不需要在C中转换malloc的返回值,因为它返回void*

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

答案 1 :(得分:0)

要修复错误,请确保已包含stdlib.h。此外,您应该注意sizeof返回变量/类型的大小,而不是赋给变量的值。所以你的sizeof(name_bytes)将返回一个整数的大小,以字节为单位,而不是100

答案 2 :(得分:0)

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