Я хочу напечатать значения вектора структур в стандартный вывод.
Структура определяется следующим образом:
typedef struct CallStackEntry {
DWORD64 base_address;
DWORD64 return_address;
char* file_name;
char* symbol_name;
DWORD line_number;
CallStackEntry(DWORD64 ba, DWORD64 ra, char* f_name, char* s_name, DWORD ln) :
base_address(ba), return_address(ra), file_name(new char[strlen(f_name)+1]), symbol_name(new char[strlen(s_name)+1]), line_number(ln)
{
memcpy(file_name,f_name, strlen(f_name)+1);
memcpy(symbol_name,s_name,strlen(s_name)+1);
}
} CS;
Следующий код работает для печати:
void debuglib::StdOutLogger::logg(std::vector<CS> ces) {
std::vector<CS>::iterator itr;
for ( itr = ces.begin(); itr < ces.end(); ++itr )
{
//printf("%08x", itr->return_address);
printf("%s() called\nBaseaddress: 0x%08x\n", itr->symbol_name, itr->base_address);
printf("Returnaddress: 0x08%x\n", itr->return_address);
printf("In File: %s (Line: %d)\n\n", itr->file_name, itr->line_number);
}
}
Этот код, однако, не работает:
for ( itr = ces.begin(); itr < ces.end(); ++itr ) {
printf("%s() called\nBaseaddress: 0x%08x\nReturnaddress: 0x%08x\nInFile:%s (Line: %d)\n\n", itr->symbol_name, itr->base_address, itr->return_address, itr->file_name, itr->line_number);
}
Во втором списке кодов filenumber и return_address всегда равны 0, а имя файла дает мне некоторые загадочные символы.
У кого-нибудь есть идеи, что может вызвать эту проблему?