Как изменить количество элементов(размер) массива строк char работа с которым ведётся через указатель в Borland C++ Builder 6?

Рейтинг: -1Ответов: 1Опубликовано: 05.02.2023

Есть указатель на некоторый массив, например такой.

*test[2] = {{"Odin"},{"Dva"}};

Требуется изменить количество элементов в этом массиве, например до 3-х, как это сделать? В Интернет нашёл, что есть функция realloc, как именно ей воспользоваться для данного случая пока что не понял.

Вот вариант который не компилируется:

test = (char *)(realloc(test,12));//возможно нужно указывать не 12, а 3, указал 12 поскольку каждый элемент в sizeof(test) добавляет 4 к длине.

Как переписать этот вариант чтобы код скомпилировался?

Так же в интернете нашёл предлагаемую функцию для изменение массива с созданием нового указателя на массив и дальнейшим копированием в него элементов. Если существует вариант без создания новой переменной пожалуйста напишите какой?

Ответы

▲ 1

Никак. Вам необходимо использовать std::vector или любой другой контейнер который подходит для вашей задачи. Если вам нужно что-то экзотическое, что ещё не реализовано где-то - можете написать свой контейнер с использованием new[] и delete[].

Массив такого типа: T array[n] будет храниться на стеке, и использовать realloc() на нём нельзя, тк функция работает только с памятью в куче.