C++ Вернуть указатель на массив из фн

Задача: нужно распарсить строку в формате "число;число;число;..." в обычный массив чисел.

Проблема, при попытке вернуть указатель, я так предполагаю, схлопывается область видимости, и данные превращаются в мусор,

Вопрос как правильно вернуть указатель, чтобы данные сохранились?

Вот код парсинга.

P.S - Сам код работает верно, пробегал в дебаге, на строчке с return, arr имеет нужные мне данные

int* SplitAndParseDigits(string digits)
{
    int digitsCount = GetCountOfDigits(digits);
    int* arr = (int*)calloc(sizeof(int), digitsCount);

    string digitsymbols = "";
    int arrPtr = 0;
    for (int i = 0; i < strlen(digits.c_str()); i++)
    {
        if (digits[i] != ';')
            digitsymbols += digits[i];
        else
        {
            int parseResult =atoi(digitsymbols.c_str());
            arr[arrPtr] = parseResult;
            arr++;
            cout << parseResult;
            digitsymbols = "";
        }
    }

    return arr;
}

Ответы (1 шт):

Автор решения: xverizex

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

вся проблема в arr. вы наверно хотели использовать arrPtr как индекс, но после arr[arrPtr] = parseResult вы увеличиваете сам указатель, а не индекс. ну то есть вы конечно же индекс увеличиваете, но потом передаете этот индекс в return. в else поменяйте так. вместо arr++ укажите arrPtr++. и тогда будет возвращаться начало массива из функции.

→ Ссылка