Здравствуйте, vsb, Вы писали:
vsb>Здравствуйте, madprogrammer., Вы писали:
M>>Привет!
M>>Есть прога на С++ под Linux (gcc). При работе она через некоторое время "съедает" всю виртуальную память (как я понял) — 3060 Мб, после чего
M>>странным образом зависает. bad_alloc-ов ниоткуда не кидается, физической памяти, судя по top, она занимает всего 0.6%.
M>>Как понять откуда растут ноги?
vsb>malloc реально не выделяет память, она выделяется при попытке чтения/записи, поэтому ситуация с тремя гигабайтами виртуальной памяти и небольшим количеством реально используемой возможна.
vsb>Где она зависает — выясняйте отладчиком.
Выяснилось, что "утекающая" виртуальная память появляется каждый раз при создании нового потока с помощью pthread_create(). При этом утекает 8 Мб (предположительно, стек).
Поток в последствии успешно завершается, однако виртуальная память не высвобождается. Как лечить, не подскажете? Идея самостоятельного управления стеком потока рассматривается
в последнюю очередь