> Возникла такая проблема:
> В цикле получаю некоторую строку и обрабатываю ее. Несколько раз приходит
> строка 3 мегабайта. Она в каком-то месте копируется (здесь не нужно
> советовать не копировать ее — это не решение проблемы в данном случае). По
> завершении итерации обе строки выходят из области видимости и удаляются,
> т.е. между итерациями память практически не растет. Первые итерации
> выполняются успешно, но потом она не копируется: вылетает исключение
> bad_alloc. Отладчик показал, что HeapAlloc возвращает 0 на попытку
> выделить 3 метра. Приложение ест метров 20 памяти и о нехватке памяти речи
> не идет. На первых итерациях без проблем проходит создание/копирование
> строки 100 мегабайт. В чем может быть проблема? Как я уже сказал,
> используется 2005-я студия с родной стандартной библиотекой.
Похоже на фрагментацию памяти. Попробуйте вызвать в начале работы программы
HeapSetInformation и переключиться на low-fragmentation heap (винда не ниже
XP) — если поможет, то точно фрагментация.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.