Проблема с увеличением размера массива символов с помощью realloc (СИ)
Пытаюсь разобраться как работает realloc с массивами символов. Столкнулся с ошибкой HEAP CORRUTPION.
Создаю динамический одномерный массив name и в цикле наполняю его словами, введенные пользователем. При этом совершаю (безуспешную) попытку расширить массив на размер введенного слова + старый размер.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int sym = 0;
char* name = NULL;
int index;
for (index = 0; index < 2; index++)
{
char temp[15] = "";
printf("ENTER: ");
fgets(temp, 15, stdin);
name = realloc(name, (strlen(temp) + sym) * sizeof(char));
strcpy(&name[sym], temp);
sym += strlen(temp);
}
free(name);
}
P.s Относительно похожий код, но с массивом чисел работает абсолютно без ошибок.
Ответы (1 шт):
Автор решения: Кирилл Солотопов
→ Ссылка
Не хватает места под нулевой символ в конце строки. (strlen(temp) + sym) -> (strlen(temp) + 1 + sym)
Ответом на мой вопрос был этот маленький нюанс. Нужно не забывать выделять память под '\0'. Спасибо!