Re: Не копируется std::string в Visual Studio 2005
От: Sergey Россия  
Дата: 05.03.08 14:54
Оценка:
> Возникла такая проблема:
> В цикле получаю некоторую строку и обрабатываю ее. Несколько раз приходит
> строка 3 мегабайта. Она в каком-то месте копируется (здесь не нужно
> советовать не копировать ее — это не решение проблемы в данном случае). По
> завершении итерации обе строки выходят из области видимости и удаляются,
> т.е. между итерациями память практически не растет. Первые итерации
> выполняются успешно, но потом она не копируется: вылетает исключение
> bad_alloc. Отладчик показал, что HeapAlloc возвращает 0 на попытку
> выделить 3 метра. Приложение ест метров 20 памяти и о нехватке памяти речи
> не идет. На первых итерациях без проблем проходит создание/копирование
> строки 100 мегабайт. В чем может быть проблема? Как я уже сказал,
> используется 2005-я студия с родной стандартной библиотекой.

Похоже на фрагментацию памяти. Попробуйте вызвать в начале работы программы
HeapSetInformation и переключиться на low-fragmentation heap (винда не ниже
XP) — если поможет, то точно фрагментация.
Posted via RSDN NNTP Server 2.1 beta
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.