Странное поведение в программе на C, повреждение переменных после выделения памяти

Я бы попробовал Поддержка шаблонов Blade

0
задан frozen198 18 January 2019 в 23:36
поделиться

2 ответа

cstring* - это просто указатель, обычно четыре или восемь байтов. sizeof (cstring*), следовательно, небольшое число, обычно четыре или восемь.

Вы не выделяете достаточно памяти для данных, достаточно памяти для хранения указателей на данные.

0
ответ дан alk 18 January 2019 в 23:36
поделиться

sizeof(cstring*)*pcount слишком мало. Расчет размера ошибочен.


Избегайте ошибок выделения. Используйте эту идиому для кода, который легче писать правильно, просматривать и поддерживать. Обратите внимание, что не используется тип .

pointer = malloc(sizeof *pointer * n);

Тогда код становится:

// options = malloc(sizeof(cstring*)*pcount);
options = malloc(sizeof *options * pcount);`
0
ответ дан chux 18 January 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: