assign 0 to _debugger_hook_dummy so that the function is not folded in retail
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
/* assign 0 to _debugger_hook_dummy so that the function is not folded in retail */
(_Reserved);
_debugger_hook_dummy = 0;
}
其實這個錯誤的原因主要是因爲內存空間的重複分配時發生錯誤。
如下面:
CString str = L"userDefined"; 或者 str.Format(L"%s",L"userDefined");
str.Format(L"%s%s",str,L"bbbbbbb");
這樣子就會導致上面的錯誤信息。這是因爲用FORMAT會在內部根據格式化參數列表對字符串本身的內在空間進行重新分配
而如果直接採用字符串本身作爲參數傳入的話,會造成內在的衝突,而這個衝突是無法遇見的,即不會經常出現。
所以,爲了避免上面的問題,應避免使用上述的方法。
CString temp= L"userDefined"; 或者 str.Format(L"%s",L"userDefined");
str.Format(L"%s%s",temp,L"bbbbbbb");
只需多采用一個變量即可。
* 注意:避免將字符串本身作爲參數傳入到使用FORMAT格式化列表的原來字符串中。
1.在很短的時間內創建多線程...
for (int i =0; i < 100; i++)
HANDLE handle = CreateThread(.....);
在1秒內一下子創建幾十個線程有可能出現這種狀況。
2. 在很短時間內訪問同一個文件的操作,同時沒有加鎖
和1差不多吧,
3.多線程在很短的時間間隔內共同操作用戶界面