| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > realloc() всегда перевыделяет память, или умеет - |
| Автор: boostcoder 7.5.2011, 23:35 |
| интересует такой момент. есть ли смысл использовать realloc() ? или он тупо выделяет новый блок и копирует в него содержимое прежнего? где вообще можно подсмотреть реализацию realloc() ? спасибо. |
| Автор: volatile 8.5.2011, 00:26 |
смысл использовать имеет место быть http://liveworkspace.org/code/bf9f9958a68cff36833a88c0a5919fa5 |
| Автор: boostcoder 8.5.2011, 00:49 |
| хм.. действительно. что-то я не додумался до такого теста |
| Автор: MAKCim 8.5.2011, 09:41 |
| у меня были проблемы с фрагментацией при использовании сабжа имхо, для спец. целей лучше юзать свой аллокатор на основе malloc |
| Автор: volatile 8.5.2011, 11:35 |
Вы имеете ввиду еще 16-разрядные дос приложения? Или поясните пожалуйста, что такое проблемы с фрагментацией в свете 32-разрядных приложений. |
| Автор: volatile 8.5.2011, 12:18 |
в смысле, realloc не могла выделить непрерывный кусок памяти, в то время как malloc могла, я вас правильно понял? |
| Автор: MAKCim 8.5.2011, 12:25 | ||
да это привело к естественной утечке памяти (когда много неиспользуемых участков, но в составе используемых) |
| Автор: boostcoder 8.5.2011, 14:19 |
а у тебя такой имеется? |
| Автор: MAKCim 8.5.2011, 19:31 |
| boostcoder, нет, это я просто предложил ну в принципе в интернете должны быть |
| Автор: boostcoder 8.5.2011, 20:07 |
они-то там есть. просто я никогда не юзал. вот и хотел разузнать о том, кто и что юзал. ну да ладно.. вопрос закрыт. |
| Автор: sergioK1 8.5.2011, 23:52 | ||
У меня проблемы с фрагментацией (правда давно) лечились заменой realloc на фунции OS - проблемы исчезли. сейчас такой способ не применим ? |
| Автор: bsa 12.5.2011, 12:31 |
| Может и применим, конечно. Вот только это не решение проблемы, а перекладывание ее на плечи ОС. Свой аллокатор нужен, когда ты используешь кучу маленьких объектов, постоянно уничтожая/создавая их. Например, тебе нужно миллион int, случайным образом каждый из них создается/уничтожается. Твой аллокатор может использовать банальный массив (deque) и список свободных элементов/областей. Или еще что-нибудь в этом роде. В каких-то книжках я видел пример этого. |
| Автор: sergioK1 12.5.2011, 16:53 | ||
это скорей memory managment один раз выделяеься большой массив и в него пишутся свои объекты ? Ну можно , хотя там свои проблемы , Это в старых книгах искать надо, до интернетовской эры, Задача в чем ? откуда эти обьекты беруться ? что значит случайным образом ? случайно ничего не бывает |