2015-03-06 4 views
0

Я запускаю точку останова в своем приложении в классе std::fstream. Отладочный вывод не дает больше информации. Я не могу воспроизвести проблему, разделив класс на собственный проект, так как он отлично работает. Пожалуйста, не могли бы вы предложить, в чем проблема?контрольных точек запуска в конструкторе

Это место брейкпойнте: The fstream class basic_filebuf constructor breakpoint

Линия Я разбиваются о, на стеком вызовов является ::

DXTBApplication.exe!std::basic_ofstream >::basic_ofstream >() Line 930 C++ 

Это CallStack:

msvcr120d.dll!_malloc_dbg() Unknown 
msvcp120d.dll!operator new(unsigned __int64,struct std::_DebugHeapTag_t const &,char *,int) Unknown 
msvcp120d.dll!std::ios_base::_Init(void) Unknown 
msvcp120d.dll!std::basic_ios<char,struct std::char_traits<char> >::init(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool) Unknown 
msvcp120d.dll!std::basic_ostream<char,struct std::char_traits<char> >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct std::char_traits<char> > *,bool) 
DXTBApplication.exe!std::basic_ofstream<char,std::char_traits<char> >::basic_ofstream<char,std::char_traits<char> >() Line 930 C++ 
DXTBApplication.exe!CMyFile::CMyFile() Line 25 C++ 
DXTBApplication.exe!CFilenames::CFilenames() Line 22 C++ 
DXTBApplication.exe!CEngine::CEngine() Line 34 C++ 
DXTBApplication.exe!CApplication::CApplication(HINSTANCE__ * hInstance) Line 50 C++ 
DXTBApplication.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * prevInstance, char * cmdLine, int showCmd) Line 47 C++ 
[External Code] 

Это мой фрагмент объявления переменной класса CMyFile:

private: 
    std::ofstream m_OFS; 
    std::ifstream m_IFS; 

конкретизированных в классе CMyFile.h Как это:

std::shared_ptr<CMyFile> m_spMyFile; // in header 
m_spMyFile.reset(new CMyFile()); // in implementation - constructor 

Заранее спасибо за любую помощь.

EDIT Это, как я назначить fstream изнутри CMyFile::OpenOutput(const std::string& sFilename, unsigned int uiIOFlags)

m_OFS = std::ofstream(sFilename.c_str(), uiIOFlags); //std::ios_base::binary); 
+4

Потоки не могут быть скопированы или назначены. Если они являются членами вашего класса, и ваш класс будет скопирован, это не сработает. – NathanOliver

+0

@NathanOliver, не назначен для копирования, но все еще назначен для переноса. – chris

+0

Вы, вероятно, развратите кучу где-то еще, и это распределение - первое место, чтобы обнаружить это. Как выглядит полный конструктор для 'CMyFile'? –

ответ

0

OK Я нашел его. В моей отладки-Несс я использую:

_CrtSetBreakAlloc(###);

Где ### = строка кода, которая просачивается. Я использовал это раньше, чтобы вытереть весь массив утечек памяти. К сожалению, я забыл и оставил номер там, и он продолжал бросать перерыв в создании памяти ... Глупо меня!

Я установил его на _CrtSetBreakAlloc(-1), и все снова стало тихим! Спасибо за все прыжки, чтобы помочь мне.

Смежные вопросы