ошибка malloc в C - PullRequest
       1

ошибка malloc в C

0 голосов
/ 26 марта 2011

Я не уверен, что с этим не так: он говорит о несовместимости неявного встроенного в 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);

Ответы [ 3 ]

8 голосов
/ 26 марта 2011

Вам нужно #include <stdlib.h>, чтобы получить правильное объявление malloc.

Также sizeof(name_bytes) + 1 выглядит подозрительно;это даст вам 5 байт памяти, а не 101, как вы, вероятно, ожидали.

Наконец, нет необходимости приводить возвращаемое значение malloc в C, поскольку оно возвращает void*.

#include <stdlib.h>
/* ... */
int name_bytes = 100;
char* name = malloc(name_bytes + 1);
0 голосов
/ 26 марта 2011

Я думаю, вам действительно нужно name = malloc(name_bytes + 1); (при условии, что вы хотите выделить 101 байт для имени)

0 голосов
/ 26 марта 2011

Чтобы исправить ошибку, убедитесь, что вы включили stdlib.h.Кроме того, вы должны заметить, что sizeof возвращает размер переменной / типа, а не значение, назначенное переменной.Таким образом, ваш sizeof (name_bytes) вернет размер целого числа в байтах, а не 100

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...