次奧,折騰幾天,記憶體檢測工具寫出來了

2022-02-18 23:55:22 字數 2496 閱讀 5162

#include 

#include

"dbg.h

"#undef new

#undef delete #ifndef ndebug

//輸出除錯資訊

void dbgout( const

char*fmt, ... )

struct

alloc_node

;

static alloc_node* g_heap = null;/*

堆的申請記錄樹根節點

*/static alloc_node* g_vector_heap = null;/*

vector堆的申請記錄樹根節點

*///

our magic guard bytes申請記憶體前後加上的保護位元組

static byte g_guard =;

//在堆中申請一塊記憶體(可以申請空記憶體n=0)

void* operator

new( size_t n, cpchar file, uint line )

if( pnode else

}

*ppuplink =pnode;

}

return

pmem;

}

//在vector請一塊記憶體(可以申請空記憶體n=0)

void* operator

new( size_t n, cpchar file, uint line )

if( pnode else

}

*ppuplink =pnode;

}

return

pmem;

}

void

operator delete( void*p )

alloc_node* pcur =g_heap;

alloc_node** ppuplink = &g_heap;

while

( pcur )

memset( pmem, time(null), pcur->len );

if( pcur->lptr && pcur->rptr )

else

free( pcur );

return

;

}

if( p else

}

dbgout(

"*** fatal: delete on unalloced memory ***

");

assert(

false

);

exit( -1

);

}

void

operator delete( void*p )

alloc_node* pcur =g_vector_heap;

alloc_node** ppuplink = &g_vector_heap;

while

( pcur )

memset( pmem, time(null), pcur->len );

if( pcur->lptr && pcur->rptr )

else

free( pcur );

return

;

}

if( p else

}

dbgout(

"*** fatal: delete on unalloced memory ***

");

assert(

false

);

exit( -1

);

}

void* operator

new( size_t n )

void* operator

new( size_t n )

//在記憶體分配樹中遍歷,尋找總共分配的長度

static

void walk_alloc_tree( alloc_node* pcur, size_t*pttl )

}

//顯示堆中分配的記憶體記錄

void dump_alloc_heaps( void

)

if( g_vector_heap )

dbgout(

"********************=

");

dbgout(

"total bytes: %u

", ttl );

dbgout(

"********************=

");

}

}

#endif

免費的獲取最近幾天內的天氣情況

function vget url curl close curl 關閉curl會話 return tmpinfo 返回資料 獲取客戶端ip位址 param integer type 返回型別 0 返回ip位址 1 返回ipv4位址數字 ip位址合法驗證 long ip2long ip ip lon...

記一次說折騰就折騰的Git之旅

背景是前幾天進行專案git倉庫拆分,對一些現有的git倉庫修改,對現在使用的乙個專案遷移到另乙個倉庫中。問題是這個倉庫是n久之前建立的,有一些舊的 本地的專案還有n多個分支。遷移的目的很明確,將現有的 的分支進行合併,然後推送到新的git倉庫。因為是頭一次做這件事兒,所以走了一條彎路,我先是簡單的給...

第一次docker折騰

二 docker安裝 如果docker啟動wsl2報錯 system.invalidoperationexception failed to set version to docker desktop exit code 1 stdout 0 0 0 0u0 0f0d0j0d0 0 0 0 0 0 ...