|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C++ | Корректность использования realloc в парах new/delete |
|
C++ | Корректность использования realloc в парах new/delete
|
Новый участник Сообщения: 15 |
Если мне потребовалось больше памяти, чем я выделил с помощью new,
корректно ли будет увеличить её размер с помощью realloc, а в конце работы удалить при помощи delete? знаю, что работает, но это правильно? |
|
Отправлено: 18:37, 06-08-2005 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать penykov
Нет, это неправильно. |
------- Отправлено: 17:09, 07-08-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать А как тогда надо? Чтобы прежние данные сохранились.
|
Отправлено: 17:54, 07-08-2005 | #3 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Надо свою функцию написать, которая создаст нужное пространство в памяти (старый объём + новый), копирует туда старые данные (есть такие функции как memcpy() или memmove()) и удалит старое пространство в памяти.
Это примерный алгоритм. |
------- Отправлено: 18:33, 07-08-2005 | #4 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать а не лучше тогда забить на new и delete и пользоваться malloc, realloc, free?
|
|
Отправлено: 19:09, 08-08-2005 | #5 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать penykov
не лучше, потому что new, new[], delete и delete[] вызывают конструктор/деструктор. Что весьма важно в C++. |
------- Отправлено: 20:56, 08-08-2005 | #6 |
![]() Ветеран Сообщения: 1180
|
Профиль | Отправить 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|