Не копируется std::string в Visual Studio 2005
От: andpar  
Дата: 05.03.08 14:32
Оценка:
Возникла такая проблема:
В цикле получаю некоторую строку и обрабатываю ее. Несколько раз приходит строка 3 мегабайта. Она в каком-то месте копируется (здесь не нужно советовать не копировать ее — это не решение проблемы в данном случае). По завершении итерации обе строки выходят из области видимости и удаляются, т.е. между итерациями память практически не растет. Первые итерации выполняются успешно, но потом она не копируется: вылетает исключение bad_alloc. Отладчик показал, что HeapAlloc возвращает 0 на попытку выделить 3 метра. Приложение ест метров 20 памяти и о нехватке памяти речи не идет. На первых итерациях без проблем проходит создание/копирование строки 100 мегабайт. В чем может быть проблема? Как я уже сказал, используется 2005-я студия с родной стандартной библиотекой.
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 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re[2]: Не копируется std::string в Visual Studio 2005
От: andpar  
Дата: 05.03.08 15:17
Оценка:
S>Похоже на фрагментацию памяти. Попробуйте вызвать в начале работы программы
S>HeapSetInformation и переключиться на low-fragmentation heap (винда не ниже
S>XP) — если поможет, то точно фрагментация.

Не, это не помогает, еще пробовал вызывать HeapCompact — тоже никакого результата
Re: Не копируется std::string в Visual Studio 2005
От: Feonyf  
Дата: 05.03.08 18:40
Оценка:
Здравствуйте, andpar, Вы писали:

A>Возникла такая проблема:

код привести сможете?
Моя строка построения буста:
.\bjam link=static threading=multi runtime-link=static -j %NUMBER_OF_PROCESSORS% --with-filesystem --with-thread --with-date_time address-model=64
Re[2]: Не копируется std::string в Visual Studio 2005
От: andpar  
Дата: 05.03.08 18:51
Оценка:
F>код привести сможете?

Нет: там слишком много нужно исходников отдать, чтобы показать ситуацию, а к какому-то простому варианту мне не удалось свести проблему
Re[3]: Не копируется std::string в Visual Studio 2005
От: Sni4ok  
Дата: 05.03.08 19:34
Оценка:
Здравствуйте, andpar, Вы писали:

F>>код привести сможете?


A>Нет: там слишком много нужно исходников отдать, чтобы показать ситуацию, а к какому-то простому варианту мне не удалось свести проблему


ну раз не можете привести код, значит юзайте x64, там адресного пространства как грязи-
засрать можно не бояться
Re[3]: Не копируется std::string в Visual Studio 2005
От: ArtDenis Россия  
Дата: 06.03.08 04:31
Оценка: +1
Здравствуйте, andpar, Вы писали:

A>Нет: там слишком много нужно исходников отдать, чтобы показать ситуацию, а к какому-то простому варианту мне не удалось свести проблему


Ну значит можно предположить, что проблема в банальной порче кучи памяти
... << RSDN@Home 1.2.0 alpha 2 rev. 854>>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.