Я не знаю, что здесь думать ...
У нас есть компонент, который работает как сервис. Он отлично работает на моей локальной машине, но на некоторых других машинах (на обеих машинах объем оперативной памяти равен 2 ГБ), он начинает генерировать исключения bad_alloc во второй и последующие дни. Дело в том, что использование памяти процессом остается неизменным на уровне примерно 50 МБ. Другая странная вещь заключается в том, что посредством отслеживания сообщений мы локализовали исключение, которое будет выброшено из объекта stringstream, который вставляет в поток не более 1-2 килобайт данных. Мы используем STL-порт, если это имеет значение.
Теперь, когда вы получаете исключение bad_alloc, вы думаете, что это утечка памяти. Но все наши ручные выделения заключены в интеллектуальный указатель. Кроме того, я не могу понять, как объекту stringstream не хватает памяти, когда весь процесс использует только ~ 50 МБ (использование памяти остается приблизительно постоянным (и, конечно, не увеличивается) со дня на день).
Я не могу предоставить вам код, потому что проект действительно большой, и часть, которая вызывает исключение, на самом деле ничего не делает, кроме как создает поток строк и << некоторые данные, а затем регистрирует их. </p>
Итак, мой вопрос ... Как может происходить утечка памяти / bad_alloc, когда процесс использует только 50 МБ памяти из 2 ГБ? Какие еще дикие догадки у вас есть относительно того, что может быть не так?
Заранее спасибо, я знаю, что вопрос расплывчатый и т. Д., Я просто в отчаянии, и я изо всех сил пытался объяснить проблему.