я изо всех сил, чтобы исправить код сегодня, то я сталкиваюсь нечто похожее на:Выделяем память для структуры с указателем символов в C
typedef struct {
int a;
int b;
int c;
int d;
char* word;
} mystruct;
int main(int argc, char **argv){
mystruct* structptr = malloc(sizeof(mystruct));
if (structptr==NULL) {
printf("ERROR!")
...
}
...
free(structptr);
return 0;
}
код был давая много ошибок памяти из-за того , что char* word
- это строка переменной длины, а malloc не выделяет для этого достаточно памяти. Фактически это было только распределение 20 Bytes
на все struct
. Есть ли способ обойти эту проблему, не превращая char*
в sth, как char word[50]
?
увидел, что у вас есть комментарий, но затем удалите его. Пожалуйста, отредактируйте свой вопрос с дополнительной информацией или отправьте второй вопрос. Существуют способы справиться с вектором 'char', который изменяется по длине. – JackCColeman
Я добавил комментарий, после чего нашел ответ в комментариях ниже. Я считаю, что фиксированный размер буфера на самом деле является лучшим решением, поскольку слово будет представлять имя, а имена не должны быть длинными, как роман;). Спасибо за помощь.Мне просто очень интересно было выделить память для переменных строк, вот почему я спросил. Но в любом случае я собирался переключиться на массивы с фиксированной длиной. –
в настоящее время занимает пространство (то есть ОЗУ), поэтому в большинстве случаев определение массива символов размером до 1024 не вызовет проблемы. Буферы ввода/вывода обычно намного больше, чем это. – JackCColeman