Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
SiNn3R
0 / 0 / 0
Регистрация: 19.09.2008
Сообщений: 10
#1

Увелечение размера динамического массива - C++

05.05.2010, 12:05. Просмотров 2969. Ответов 4
Метки нет (Все метки)

Добрый день!
Итак, допустим есть массив:

char *str = new char[4];

Задача следующая: увеличить размер массива на 1 (то есть до 5 элементов).
Использовать std::string нельзя!

В голову лезет только 1 вариант:
1) Создать новый массив на 1 больше размером старого.
2) С помощью memcpy скопировать данные из старого массива в новый.
3) Удалить старый массив и изменить указатель str на новый массив.

Но это как-то громоздко, нет ли вариантов быстрее?
Заранее благодарю =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2010, 12:05     Увелечение размера динамического массива
Посмотрите здесь:

C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
C++ Измерение размера динамического массива
C++ Подскажите простую реализацию динамического массива и его использование с возможностью изменения его размера
C++ Функция изменения размера динамического массива
Динамическое увеличение размера динамического массива C++
C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
C++ Изменение размера динамического массива (resize)
C++ Double free or corruption при изменении размера динамического массива
Определение размера динамического массива строк C++
Изменение размера динамического массива объектов класса C++
C++ Изменение размера динамического массива
C++ Определение размера динамического массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
05.05.2010, 12:49     Увелечение размера динамического массива #2
SiNn3R, увеличить размер выделенной памяти нельзя (по крайне мере средствами C++). Приведенный вами вариант единственный.
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
06.05.2010, 09:20     Увелечение размера динамического массива #3
Для такого массива можно использовать
C
1
char *s = (char *)malloc(4);
Для изменения
C
1
s =  (char *)realloc(s, 10);
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,304
06.05.2010, 09:46     Увелечение размера динамического массива #4
Я облажался
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
06.05.2010, 09:57     Увелечение размера динамического массива #5
kravam, плохой подход, т.к. нет копирования элементов и чреват утечками памяти.
Yandex
Объявления
06.05.2010, 09:57     Увелечение размера динамического массива
Ответ Создать тему
Опции темы

Текущее время: 05:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru