Я найти утечку памяти в моей программе, я попробовал следующее руководство от MicrosoftОбнаружение утечки памяти при перегрузке нового оператора?
http://msdn.microsoft.com/en-us/library/e5ewb1h3%28v=vs.90%29.aspx
Но есть некоторые элементы отчета утечки памяти, не имя исходного файла и строки кода.
Я попытался использовать VLD, но VLD не отображает имя файла в стеке вызовов, хотя я сделал какой-либо шаг в руководствах в Интернете.
Из отчета о утечке памяти из VLD я вижу, что размер блока просочился. Поэтому у меня есть идея. Предположим, что я могу перегрузить новый оператор и отлаживать его, возможно, я смогу обнаружить, где утечка памяти произошла с помощью специальной точки останова в качестве кода ниже.
void* operator new (size_t size)
{
if(size = 1107)
{
int temp = 0; //Put the break point here
}
void *p = malloc(size);
return p;
}
Но я не могу перегрузить оператор новый, потому что ошибка при компиляции программы:
Error 166 error LNK2005: "void * __cdecl operator new(unsigned __int64,char *,unsigned int)" ([email protected][email protected]) already defined in CommonGlobal.obj E:\TIN HOC\Learning\Chuong Tring Dao Tao\Working\Main_Code\Mystic\branches\DVRServer\Common\Message.obj Common
Кто-то может сказать мне, как перегрузить оператор новый, для отладки в нем?
Возможно, перегрузка определена в заголовке без 'inline'? – Angew
'size = 1107' ... те жуткие присваивания –
@TTGroup, не связанные, но я надеюсь, что вы знаете, что ваш' if' всегда оценивается как 'true' – vsoftco