Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > проблема с памятью


Автор: crazylam 19.5.2007, 12:54
Здравствуйте!

Есть проблема.. очень срочная большая проблема.

В большом проекте на С++ вдруг стали возникать странные баги с выделением памяти, с хипом,.... Периодически выбрасываются ексепшены на операторах new и delete (типа памяти мало),  malloc может 0 вдруг вернуть, std:vector<>.push_back() (и pop_back тоже) не работает иногда...
Было бы очень кстати, если бы кто-нибудь, у кого встречалась такая проблема, описал бы СВОИ (не обязательно наши smile) причины и методы решения... причем дедлайн, грубо говоря, через 2 часа...
Зарание спасибо...

Автор: vinter 19.5.2007, 12:59
компилятор, код

Автор: bsa 22.5.2007, 12:47
Думаю все просто. Есть утечка памяти и через 2 часа вся память (в т.ч. и виртуальная) подходит к концу. Вот тогда и начинает malloc выдавать 0... еще возможен вариант сильной фрагментации памяти. Но я никогда такого не встречал.

Автор: Daevaorn 22.5.2007, 12:56
Цитата(crazylam @  19.5.2007,  13:54 Найти цитируемый пост)
 new и delete (типа памяти мало), 

Цитата(crazylam @  19.5.2007,  13:54 Найти цитируемый пост)
malloc может 0 вдруг вернуть

Цитата(crazylam @  19.5.2007,  13:54 Найти цитируемый пост)
 std:vector<>.push_back()

Пугает такой винегрет как таковой.

Автор: threef 22.5.2007, 15:06
Из вышесказанного можно только разве посоветовать:
раздели тематически свои переменные на группы, для каждой используй отдельный менеджер памяти. Как только группа выбывает - уничтожай менеджер.
Обрати внимание на сказанноеDaevaorn,  смешение стилей , конечно же - плохой стиль ;)

Автор: bsa 22.5.2007, 15:09
Цитата(threef @ 22.5.2007,  15:06)
Из вышесказанного можно только разве посоветовать:
раздели тематически свои переменные на группы, для каждой используй отдельный менеджер памяти. Как только группа выбывает - уничтожай менеджер.

Если не ошибаюсь, это называется pool. Есть уже готовые, например: http://www.boost.org/libs/pool/doc/index.html

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