dbg_heap_record.cpp
来自「memory checkd 一个工具 潜入到自己的code里面可以调试」· C++ 代码 · 共 66 行
CPP
66 行
class memory_record{ friend class dbg_heap_record_list; memory_record(void *p, memory_record *next, size_t line, const char *file, size_t id, size_t size) :m_pointer(p),m_next(next),m_line(line),m_id(id),m_size(size) { strncpy(m_file, file, 255); } void *m_pointer; memory_record *m_next; size_t m_line; size_t m_id; size_t m_size; char m_file[256];};dbg_heap_record_list* dbg_heap_record_list::instance(){ static dbg_heap_record_list inst; return &inst;}void dbg_heap_record_list::record(void *p, const size_t line, const size_t size, const char *file){ int begin_pos = (*file == '/' ? 30 : 0); memory_record *r = new memory_record(p, m_head, line, file + begin_pos, ++m_id, size); m_head = r;}void dbg_heap_record_list::remove(void *p){ memory_record *cur = m_head; memory_record *prev = 0; while(cur) { if(cur->m_pointer == p) { if(prev) { prev->m_next = cur->m_next; } else { m_head = cur->m_next; } delete cur; break; } prev = cur; cur = cur->m_next; }}void dbg_heap_record_list::dump(){ for(memory_record *cur = m_head; cur; cur = cur->m_next) { printf("\n(%4d)[%5d] %s:%d", cur->m_id, cur->m_size, cur->m_file, cur->m_line); } printf("\n");}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?