SHCreateDirectoryEx(NULL, this->Directory, NULL);
TCHAR filename[512];
memset((void*) filename, 0, sizeof(filename));
wsprintf(filename, L"%s%s%s\0", this->Directory, this->ProjName, L".cncprj");
std::wfstream fileOut;
fileOut.open((wchar_t*)filename, std::ios::in|std::ios::binary);//ошибка здесь
if(!fileOut)
{
return;
}
//Чтение
fileOut.close();
Не открывает файл
Подскажите пожалуйста как исправить сие дело.
Пишу в MS Visual Studio 2010.
PS. в других программах такого не наблюдал.
PPS. Предполагаю, что проблема с памятью, т.к. отлаживая ошибку кидает в исходники malloc()
проблемный код где?
Не думаю, что поможет.
Вот что вылетает:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: CNCPainter.exe
Версия приложения: 1.0.0.1
Отметка времени приложения: 4d0a2a73
Имя модуля с ошибкой: StackHash_c20e
Версия модуля с ошибкой: 6.1.7600.16559
Отметка времени модуля с ошибкой: 4ba9b29c
Код исключения: c0000374
Смещение исключения: 000cdc9b
Версия ОС: 6.1.7600.2.0.0.256.1
Код языка: 1049
Дополнительные сведения 1: c20e
Дополнительные сведения 2: c20ee8eedd20b6357b0b9c6ecbd30d5c
Дополнительные сведения 3: 4a7e
Дополнительные сведения 4: 4a7e8eaf87975c827651b15f18612fea
Я кое-что узнал. DEP блокирует выделение памяти. При режимах совместимости с Windows XP все работает нормально. Кто знает как его программно отключить?
Код явно небезопасный -- перемешаны TCHAR с wchar_t и префиксом L. Либо везде явно используй Юникод, либо _t-функции, чтобы не зависеть от типа проекта.
Проект в Юникоде. То что перемешано я знаю. Но TCHAR это макропереопределение wchar_t, так что разницы не вижу.
Цитата: SaV-94
Проект в Юникоде. То что перемешано я знаю. Но TCHAR это макропереопределение wchar_t, так что разницы не вижу.
В какой системе? ;) Система уж точно так не считает, раз у тебя память портится.