При работе программы постоянно увеличивается объем используемой памяти. Происходит это очень медленно, но все же где-то есть утечка. Не могу понять в чем проблема. Ниже код потока. Там где код1 и код2 нет никаких объявлений переменных, только использование методов класса AnsiString os(), :elete(), ::SubString()) и несколько циклов while(); Code: unsigned long __stdcall work_thr(void*) { FILE* fSave; AnsiString sFormat = "file001"; AnsiString sData = ""; int iCount = 1000; while(!bComplete) { //тут код1 for(int j = 0; j < iCount; ++j) { //тут код2 fSave = fopen((sFormat + ".txt").c_str(), "a"); if(fSave) { fputs((sData + "\n").c_str(), fSave); fclose(fSave); } } } return 0; } В чем может быть проблема?
Утечка в цикле while(!bComplete), используемая память увеличивается во время работы, когда все потоки активны. Но все равно спасибо, поправлю это.
А ты на все 100% уверен что тут вообще есть утечка? Я к тому, что когда-то тоже так в ДЗ винды смотрел думал есть утечка в прграмме. Потом установил тулзу встраивающуюся в код, погонял прогу с нею - утечек не нашлось. При этом для теста тут же написал код с утечкой - успешно детектировала. Вообще в ДЗ не так то просто детектировать memory leaks, там не все так очевидно как кажется на первый взгляд.