最近在用vector,定時器裡不斷刪除更新,另乙個執行緒在賦值給乙個變數,產生記憶體洩漏問題,使用時需要加鎖,方法如下:
#include
#include
#include
#include
#include
using namespace std;
#pragma comment( lib,"winmm.lib" )
struct a
;vectorveca;
std::mutex m;
int n = 0;
//#define test_read_write
#define test_push_delete
dword winapi threadfun1(lpvoid pparam)
}#endif
#ifdef test_push_delete
dword lasttime = timegettime();
//更改vector中的資料結構
while (1)
}#endif
return 0;
}dword winapi threadfun2(lpvoid pparam)
}#endif
#ifdef test_push_delete
//更改vector中的資料結構
while (1)
m.unlock();
}#endif
return 0;
}int main()
#endif
handle h1= createthread(0, 0, threadfun1, null, 0, null);
handle h2 = createthread(0, 0, threadfun2, null, 0, null);
handle hands = ;
waitformultipleobjects(sizeof(hands) / sizeof(handle), hands, true, infinite);
cout << "所有執行緒結束!" << endl;
}
記憶體洩漏 記憶體溢位 記憶體越界 緩衝區溢位 棧溢位
內容會持續更新,有錯誤的地方歡迎指正,謝謝 記憶體洩漏 memory leak 是指程式中己動態分配的堆記憶體由於某種原因程式未釋放或無法釋放,造成系統記憶體的浪費,導致程式執行速度減慢甚至系統崩潰等嚴重後果。記憶體溢位 out of memory 是指程式在申請記憶體時,沒有足夠的記憶體空間供其使...
mysql 記憶體越界 strncpy越界
strncpy dest,src,n 似乎是安全的函式 原型 char strncpy char restrict s1,const char restrict s2,size t n 今天碰到了問題,是由於對strncpy理解不夠造成的 man裡 事實上s2往往不如n那麼長,於是s1剩餘部分會全填...
幾個C 記憶體洩漏和越界檢測工具簡介
一 boundschecker boundschecker是乙個執行時錯誤檢測工具,它主要定位程式執行時期發生的各種錯誤。它通過駐留在visual c 開發環境內部的自動處理除錯程式來加速應用程式的開發,縮短產品發布時間。boundschecker對於程式設計中的錯誤 大多數是c 中特有的 提供了清...