Проблема с std::string
Есть такая проблема:
При попытке записи строки в экземпляр строки std::string происходит выброс исключения. Совместно ипользую ATL и STL. Запись производится обычным оператором присваивания или автоматическим созданием строки при передаче ее в качестве параметра.
Отладчик показал, что исключительная ситуация возникает при попытке выделения памяти, при чем в некоторых случаеях не только стандартных строк. В чем может быть дело? Памяти свободной достаточно, проект "вдруг" перестал работать.
Отладчик показал, что исключительная ситуация возникает при попытке выделения памяти, при чем в некоторых случаеях не только стандартных строк. В чем может быть дело? Памяти свободной достаточно, проект "вдруг" перестал работать.
А ты уверен, что записываешь байты по адресу буфера строки, а не ее адреса?
Вообще, приведи пример неработающего кода.
А ты уверен, что записываешь байты по адресу буфера строки, а не ее адреса?
Вообще, приведи пример неработающего кода.
Уверен, поскольку непосредственно с адресом строки работает библиотека stl. Я простледил ее вызовы в операторе присваивания и нашел точку ошибки - выделение памяти.
Пример:
CString b = "blah-blah-blah";
std::string a = b;
Пример:
CString b = "blah-blah-blah";
std::string a = b;
Извини, но пример несколько странный.
Зачем использовать и CString и std::string одновременно? Используй что-то одно.
Кроме того могут возникнуть проблемы при переходе на Unicode, т.к. CString автоматом станет CStringW, а std::string так и останется мультибайтовым. Кстати, как ты сейчас компилируешь?
А с примером можно попробовать разобраться так:
CString b = "blah-blah-blah";
std::string a = static_cast<LPCTSTR>(b);
Извини, но пример несколько странный.
Зачем использовать и CString и std::string одновременно?
Возможно, уже переписал полностью с объектами ATL. Все равно не работает, та же ошибка - E_OUTOFMEMORY, только теперь при добавлении элемента в массив. А памяти еще более чем достаточно. В чем может быть дело?
Возможно, уже переписал полностью с объектами ATL. Все равно не работает, та же ошибка - E_OUTOFMEMORY, только теперь при добавлении элемента в массив. А памяти еще более чем достаточно. В чем может быть дело?
Надо смотреть код, так сказать сложно.
Возможно, наведенная ошибка.