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