Read:Используя символ ** в функции, что мы могли бы таНос память для полукокса *, который передается в ее
и другие вопросы по SO, связанный с этим вопросом и другие на всемирной паутине, поэтому продолжайте читать ...
Так скоро, я не понять, я никогда не alloc
как эта память для char *
, но я думал, что это может работать:
void _alloc(char *line)
*line = malloc(sizeof(char) * BUFSIZE);
Игнорировать обработчик ошибок в _alloc
и main
. Главное SEGFAULT
в разделе, как это:
main()
{
char *text, *start;
_alloc(text);
start = text;
// add contents in text briefly
*text++ = 'd'; *text = '\0'; // SEGFAULT
fprintf(stdout, "%s", start);
}
У меня была картина, что функция _alloc работает что-то вроде этого:
main()
{
char *text;
/// function _alloc:
char *tmp = text;
*tmp = malloc (sizeof(char) * BUFSIZE);
/// end
}
И ... Когда я попробовал это, дайте мне warning: присваивание делает целое число из указателя без литого и SEGF. Моя картина о нем, это:
tmp = text; // tmp point at address of line
*tmp = malloc(...); // tmp change to what point line...
И я увидел, что мне нужно в _alloc (символ **), и не могу понять, как он работает с **. Я пытался манипулировать с помощью массива [] [], я это знаю. Но не может получить картину, почему она должна быть символом **? Вот часть ответа:
Здесь
line
локальная переменная в_alloc
. Указатели передаются по значению в C, поэтому получает копию указателя в основном, когда вы делаете_alloc(text);
< н.у.к. пользователя ответа (измененный с моим именем переменных) на Scope of malloc used in a function
P.S. я знаю, что проще писать функции, как этот char *_alloc();
Но вы не передаете 'char **' функции '_alloc'. –
'void _alloc (char ** line);' и 'char * text; _alloc (&text); '? – crashmstr
Извините за это, я меняю сейчас. Я изменил имя переменных, потому что это было не так читаемо, и забыть изменить для всех ошибку. – RadijatoR