Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C++ | Корректность использования realloc в парах new/delete

Ответить
Настройки темы
C++ | Корректность использования realloc в парах new/delete

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если мне потребовалось больше памяти, чем я выделил с помощью new,
корректно ли будет увеличить её размер с помощью realloc, а в конце работы удалить при помощи delete?

знаю, что работает, но это правильно?

Отправлено: 18:37, 06-08-2005

 

редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


penykov
Нет, это неправильно.

-------
http://ivank.ru


Отправлено: 17:09, 07-08-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


А как тогда надо? Чтобы прежние данные сохранились.

Отправлено: 17:54, 07-08-2005 | #3


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Надо свою функцию написать, которая создаст нужное пространство в памяти (старый объём + новый), копирует туда старые данные (есть такие функции как memcpy() или memmove()) и удалит старое пространство в памяти.
Это примерный алгоритм.

-------
Fortes fortuna adiuvat


Отправлено: 18:33, 07-08-2005 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


а не лучше тогда забить на new и delete и пользоваться malloc, realloc, free?

Отправлено: 19:09, 08-08-2005 | #5


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


penykov
не лучше, потому что new, new[], delete и delete[] вызывают конструктор/деструктор. Что весьма важно в C++.

-------
http://ivank.ru


Отправлено: 20:56, 08-08-2005 | #6

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Проще воспользоваться шаблоном vector<>. Он умеет всё, что нужно,
работает эффективно (в т.ч. старается уменьшить количество вызовов new/delete),
а в некоторых реализациях ещё и память пытается экономить.
Его можно использовать как универсальный буфер:
Код: Выделить весь код
std::vector<double> my_table_func;
double d;

while (cin>>d)
{
    my_table_func.push_back(d);
}

for(int i=0; i<my_table_func.size(); ++i)
{
    cout << my_table_func[i] << '\n';
}

my_table_func.resize(my_table_func.size()*3 + 1);

for(int i=0; i<my_table_func.size(); ++i)
{
    cout << my_table_func[i] << '\n';
}

Отправлено: 13:57, 10-08-2005 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C++ | Корректность использования realloc в парах new/delete

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как форсировать net use /delete ? mitiya Скриптовые языки администрирования Windows 2 21-09-2009 01:52
delete C:\*.* /exclude=zzz.lst ? semiono AutoIt 17 17-06-2009 22:51
[решено] Ctrl+Alt+Delete в WelcomeSreeen Klinifin Microsoft Windows 2000/XP 5 05-04-2009 14:43
Ошибка - Клавиатура-Не работают клавиши Delete и кнопки с тэгами. dovyduka Microsoft Windows 2000/XP 4 23-02-2009 13:52
Delete khvalera Программирование и базы данных 7 08-12-2003 17:01




 
Переход