Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > realloc() всегда перевыделяет память, или умеет -


Автор: boostcoder 7.5.2011, 23:35
интересует такой момент. есть ли смысл использовать realloc() ? или он тупо выделяет новый блок и копирует в него содержимое прежнего?
где вообще можно подсмотреть реализацию realloc() ?

спасибо.

Автор: volatile 8.5.2011, 00:26
Цитата(boostcoder @  7.5.2011,  23:35 Найти цитируемый пост)
есть ли смысл использовать realloc

смысл использовать имеет место быть
http://liveworkspace.org/code/bf9f9958a68cff36833a88c0a5919fa5

Автор: boostcoder 8.5.2011, 00:49
хм.. действительно. что-то я не додумался до такого теста smile

Автор: MAKCim 8.5.2011, 09:41
у меня были проблемы с фрагментацией при использовании сабжа
имхо, для спец. целей лучше юзать свой аллокатор на основе malloc

Автор: volatile 8.5.2011, 11:35
Цитата(MAKCim @  8.5.2011,  09:41 Найти цитируемый пост)
проблемы с фрагментацией 

Вы имеете ввиду еще 16-разрядные дос приложения?
Или поясните пожалуйста, что такое проблемы с фрагментацией в свете 32-разрядных приложений.

Автор: MAKCim 8.5.2011, 12:14
Цитата(volatile @  8.5.2011,  11:35 Найти цитируемый пост)
Или поясните пожалуйста, что такое проблемы с фрагментацией в свете 32-разрядных приложений. 

это когда много мелких кусков, а не больших линейных

Автор: volatile 8.5.2011, 12:18
Цитата(MAKCim @  8.5.2011,  12:14 Найти цитируемый пост)
это когда много мелких кусков, а не больших линейных 

в смысле, realloc не могла выделить непрерывный кусок памяти, в то время как malloc могла, я вас правильно понял?

Автор: MAKCim 8.5.2011, 12:25
Цитата(volatile @  8.5.2011,  12:18 Найти цитируемый пост)
в смысле, realloc не могла выделить непрерывный кусок памяти, в то время как malloc могла, я вас правильно понял? 

да
это привело к естественной утечке памяти
(когда много неиспользуемых участков, но в составе используемых)

Автор: boostcoder 8.5.2011, 14:19
Цитата(MAKCim @  8.5.2011,  09:41 Найти цитируемый пост)
лучше юзать свой аллокатор на основе malloc

а у тебя такой имеется? smile 

Автор: MAKCim 8.5.2011, 19:31
boostcoder, 
нет, это я просто предложил  smile 
ну в принципе в интернете должны быть

Автор: boostcoder 8.5.2011, 20:07
Цитата(MAKCim @  8.5.2011,  19:31 Найти цитируемый пост)
в интернете должны быть

они-то там есть. просто я никогда не юзал. вот и хотел разузнать о том, кто и что юзал.

ну да ладно.. вопрос закрыт.

Автор: sergioK1 8.5.2011, 23:52
Цитата(MAKCim @ 8.5.2011,  08:41)
у меня были проблемы с фрагментацией при использовании сабжа
имхо, для спец. целей лучше юзать свой аллокатор на основе malloc

У  меня проблемы с фрагментацией (правда давно) лечились заменой realloc на фунции OS  - проблемы исчезли.
сейчас такой способ не применим ?


Автор: bsa 12.5.2011, 12:31
Цитата(sergioK1 @  8.5.2011,  23:52 Найти цитируемый пост)
сейчас такой способ не применим ?
Может и применим, конечно. Вот только это не решение проблемы, а перекладывание ее на плечи ОС.
Свой аллокатор нужен, когда ты используешь кучу маленьких объектов, постоянно уничтожая/создавая их. Например, тебе нужно миллион int, случайным образом каждый из них создается/уничтожается. Твой аллокатор может использовать банальный массив (deque) и список свободных элементов/областей. Или еще что-нибудь в этом роде. В каких-то книжках я видел пример этого.

Автор: sergioK1 12.5.2011, 16:53
Цитата(bsa @ 12.5.2011,  11:31)
Цитата(sergioK1 @  8.5.2011,  23:52 Найти цитируемый пост)
сейчас такой способ не применим ?
Может и применим, конечно. Вот только это не решение проблемы, а перекладывание ее на плечи ОС.
Свой аллокатор нужен, когда ты используешь кучу маленьких объектов, постоянно уничтожая/создавая их. Например, тебе нужно миллион int, случайным образом каждый из них создается/уничтожается. Твой аллокатор может использовать банальный массив (deque) и список свободных элементов/областей. Или еще что-нибудь в этом роде. В каких-то книжках я видел пример этого.


это скорей memory managment 
 один раз выделяеься большой массив и в него пишутся свои объекты  ?  Ну можно , хотя там свои проблемы ,
Это в старых книгах искать надо, до интернетовской эры, 


Задача в чем ? откуда эти обьекты беруться  ? что значит случайным образом ? случайно ничего не бывает  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)