Проблема с увеличением размера массива символов с помощью 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'. Спасибо!

→ Ссылка