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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
SiNn3R
0 / 0 / 0
Регистрация: 19.09.2008
Сообщений: 10
05.05.2010, 12:05     Увелечение размера динамического массива #1
Добрый день!
Итак, допустим есть массив:

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++ Изменение размера динамического массива (resize)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 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
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,270
06.05.2010, 09:46     Увелечение размера динамического массива #4
Я облажался
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
06.05.2010, 09:57     Увелечение размера динамического массива #5
kravam, плохой подход, т.к. нет копирования элементов и чреват утечками памяти.
Yandex
Объявления
06.05.2010, 09:57     Увелечение размера динамического массива
Ответ Создать тему
Опции темы

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