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

Как добавить новой динамической памяти к уже выделенной - C++

Восстановить пароль Регистрация
 
[Федя]
9 / 9 / 1
Регистрация: 01.02.2010
Сообщений: 35
15.11.2011, 22:08     Как добавить новой динамической памяти к уже выделенной #1
Добрый вечер! У меня есть следующий вопрос:
Допустим я выделил для некоторой строки память
C++
1
2
char *p;
p = new char [10];
Поработал какое-то время с этими 10 символами, понадобилось расширить область до 15 символов (что бы при этом за p[9] сразу следовали новые добавленные элементы p[10], p[11], ...)

Подскажите пожалуйста, как мне это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 22:08     Как добавить новой динамической памяти к уже выделенной
Посмотрите здесь:

C++ Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
Выделение и удаление памяти, выделенной для динамической строки C++
C++ Двумерный массив в динамической памяти как поле класса
C++ Как уменьшить размер выделенной памяти
C++ Как узнать размер массива в динамической памяти?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5917 / 3354 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
15.11.2011, 22:13     Как добавить новой динамической памяти к уже выделенной #2
C++
1
2
3
4
5
6
7
8
char *p;
p = new char [10];
/*
*/
p = new char [15];
/*
*/
delete [] p;
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.11.2011, 22:15     Как добавить новой динамической памяти к уже выделенной #3
Петррр, и получим утечку памяти

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
 
char* p = new char [10];
/*
*/
char* tmp = new char [15];
std::copy(p, p + 10, tmp);
delete [] p;
p = tmp;
/*
*/
delete [] p;
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
15.11.2011, 22:38     Как добавить новой динамической памяти к уже выделенной #4
C++
1
2
3
4
5
6
7
8
char *p;
p = new char [10];
...
char *t = new char[15];
strcpy(t, p);
delete [] p;
p = t;
// продолжаем запись в p
crisp
0 / 0 / 0
Регистрация: 16.07.2016
Сообщений: 6
30.09.2016, 20:36     Как добавить новой динамической памяти к уже выделенной #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
//#include <stdlib.h> для C
#incude <cstdlib>
 
//выделяем память;
char * p = (char*) malloc(10*sizeof(char)); 
//если система не может выделить память, возвращается NULL;        
if (p==NULL) exit (1);        
//увеличиваем память;
p = (char *) realloc (p,15*sizeof(char));
 
//освобождаем память
free(p);
Yandex
Объявления
30.09.2016, 20:36     Как добавить новой динамической памяти к уже выделенной
Ответ Создать тему
Опции темы

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