Когда может произойти утечка памяти?

Я не знаю, что здесь думать ...

У нас есть компонент, который работает как служба. Он отлично работает на моем локальном компьютере, но на другом компьютере (на обоих машинах RAM равен 2 ГБ) он начинает генерировать исключения bad_alloc во второй и последующие дни. Дело в том, что использование памяти процессом остается примерно на уровне 50 МБ. Еще одна странность заключается в том, что с помощью трассировки сообщений мы локализовали исключение, которое должно быть выброшено из объекта строкового потока, который вставляет в поток не более 1-2 Кб данных. Мы используем STL-Port, если это важно.

Теперь, когда вы получаете исключение bad_alloc, вы думаете, что это утечка памяти. Но все наши ручные распределения заключены в интеллектуальный указатель. Кроме того, я не могу понять, как объекту строкового потока не хватает памяти, когда весь процесс использует только ~ 50 МБ (использование памяти остается примерно постоянным (и, конечно, не увеличивается) изо дня в день).

Я не могу предоставить вы с кодом, потому что проект действительно большой, и часть, которая генерирует исключение, действительно ничего не делает, кроме создания строкового потока и << некоторых данных, а затем регистрирует их.

Итак, мой вопрос ... Как может произойти утечка памяти / bad_alloc, когда процесс использует только 50 МБ памяти из 2 ГБ? Какие еще у вас дикие догадки относительно того, что могло быть неправильным?

Заранее спасибо, я знаю, что вопрос расплывчатый и т. Д. Я просто в отчаянии и изо всех сил пытался объяснить проблему.

11
задан Armen Tsirunyan 22 November 2010 в 14:17
поделиться