вот фрагмент кода:
std::ostringstream oss;
DWORD pause = PROCESS_INFO_INTERVAL;
unsigned cnt(0);
const std::string cur_dir(GRES().LogDir());
FILE* fp;
while (true)
{
oss.str("");
oss << cur_dir << ('\\' == cur_dir[cur_dir.length() - 1] ? "_" : "\\_") << cnt++ << '_' << PROCESS_INFO_FNAME;
все вроде бы работало нормально, пока не подключил сторонний отладчик, а он орет в этом месте следущее:
Dangling Pointer: Pointer 0x01EE9260, allocated by global_operator_new, has already been freed.
это стек вызовов до места ошибки:
basic_streambuf<char,struct std::char_traits<char> >::eback streambuf 170
basic_stringbuf<char,struct std::char_traits<char>,class std::allocator<char> >::overflow sstream 131
basic_streambuf<char,struct std::char_traits<char> >::sputc streambuf 148
operator<<<char,struct std::char_traits<char>,class std::allocator<char> > string 566
CreateProcessLogingThread resources.cpp 26
threadstartex threadex.c 241
kernel32.dll 0x0000B680
в моем коде это фактически строка:
oss << cur_dir << ('\\' == cur_dir[cur_dir.length() - 1] ? "_" : "\\_") << cnt++ << '_' << PROCESS_INFO_FNAME;
которая (если не обращать внимание на этот дебагер) дает правильный резульат.
Я еще многого не понимаю, поэтому прошу помочь. Скажите насколько серьезно предупреждение этого дебагера и почему студия сама не видит произошедшей ошибки?