Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> new & delete, приходилось ли перегружать 
:(
    Опции темы
 
Приходилось ли Вам перегружать операторы управления памятью?
Да! [ 7 ]  [36.84%]
Нет! [ 12 ]  [63.16%]
А разве их можно перегружать) [ 0 ]  [0.00%]
Всего проголосовавших: 19
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
chaos
Дата 5.10.2005, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Приходилось ли Вам перегружать операторы управления памятью?
И зачем smile (что за задача такая была интересная)

Это сообщение отредактировал(а) chaos - 5.10.2005, 05:46
PM WWW   Вверх
Neitron
Дата 5.10.2005, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Не знаю как можно перегрузить delete, но перегружать new приходица часто.
А зачем? ответ прост. Посмотри хотя бы на класс AnsiString в Builder и поймешь для чего можно перегружать.
Если я правильно понел речь идет о
new Class(...,...,...);

Это сообщение отредактировал(а) Neitron - 5.10.2005, 09:09


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Mayk
Дата 5.10.2005, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



На практике (хотя какая нафик у меня практика) нет. В теории можно представить код для детекции memory leakов. Ну типа
Код

operator new(){
    return *allocated_list.push_back(malloc());
}
operator delete(){
    with(allocated_list){
          if(find(block) != end) 
              erase(block), return;     
          cerr <<  __FILE__ << ':' << ___LINE__ << "illegal delete" << endl;
   }
}

int main()
{
 atexit({
     foreach(block in allocated_list){
           cerr << block.FILE << ':' << block.LINE << ": memory leak" << endl
     }
 )
}

(разумеется это не совсем с++, но идея думаю ясна(не бейте за издевательство над языком smile)

Это сообщение отредактировал(а) Mayk - 5.10.2005, 09:25


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Neitron
Дата 5.10.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Ох класс)) Точняк, не догодалсяsmile


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
En_t_end
Дата 5.10.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



Не перегружал и наверное не буду... ЗЫ не путать с не знаю и знать не хочу.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Earnest
Дата 7.10.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Когда-то давно, еще под Досом (Борланд С++ 3.1) писала аллокатор для мелких объектов. По-моему, на rsdn.ru не так давно видела статью про "это" (ссылку искать лень). Вот ровно так я и делала: отдельные блоки для объектов разного размера и т.д... Памяти там было мало, а объектов плодилось много ... Потом еще были случаи, когда надо было построить объект в заданном буфере, уж не помню зачем...
Последнее время нет. Иногда возникают мысли - будет тормозить, нарисуем свой аллокатор (благо STL-контейнеры это допускают). Но начнешь бывало профилировать, и видишь, что на фоне всяческих вычислений и т.д. работа с памятью - это такая мелочь... Тем более, что STL-port'овские аллокаторы устроены вполне оптимально.



--------------------
...
PM   Вверх
Void
Дата 8.10.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Еще применение: сборка мусора. См. Boehm GC. Давно хочу попробовать использовать на полную катушку... Пока негде.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Guest
  Дата 10.10.2005, 21:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Earnest @ 7.10.2005, 14:51)
Тем более, что STL-port'овские аллокаторы устроены вполне оптимально.

а что в STL есть альтернатива new & delete?
извините, но можно ли в таком случае примерчик - хочу попробовать.

  Вверх
chipset
Дата 10.10.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Перегружал и new и delete и писал в лог файл о том что когда было выделено.
Спасало от мемориликов очень часто smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Earnest
Дата 11.10.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(Guest @ 10.10.2005, 21:38)
а что в STL есть альтернатива new & delete?
извините, но можно ли в таком случае примерчик - хочу попробовать

Это не альтернатива new, просто STL, которой я пользуюсь, для узлов списков и т.д. использует свои аллокатары (по блокам распихивает), а не стандартные new. То ли только в релизе, то ли и в дебаге тоже - не помню. И какой тебе пример нужен? Это все делается прозрачно, так что многие и не подозревают. Или тебя интересует, как свой аллокатор подсунуть? Извини, примера, под рукой нет - просто реализуешь свой аллокатор, как в доках STL написано, и все. Класс аллокатора является последним параметром шаблона во всех контейнерах. По-моему, об этом неплохо написано у Майерса в "Эффективное использование STL".




--------------------
...
PM   Вверх
maxim1000
Дата 11.10.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



как-то попробовал отключить полностью все библиотеки в C++
пришлось определять свои new и delete smile
(определил через WinApi-шные функции)


--------------------
qqq
PM WWW   Вверх
Coocky
Дата 11.10.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата(chipset @ 10.10.2005, 23:24)
Перегружал и new и delete и писал в лог файл о том что когда было выделено

Хех!
По стопам идешь smile
Значит на верном пути.. smile



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0998 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.