Ситуация:
Я вижу, что при закрытии класса увеличивается примерно на 120 КБ, поэтому, когда я закрываю классы, в несколько раз увеличивается объем памяти - и мне нужно выяснить, что вызывает это.
Просто ищу какой-нибудь хороший совет или хитрость, как узнать, что не освобождается / выпущено с vstudio 2010 - какие-нибудь идеи?
Вот более ясно, что я делаю (очень упрощенно)
class cSomeClass
{
cSomeClass();
~cSomeClass();
int Initialize();
void Deinitialize();
}
cSomeClass cCamera;
main()
{
Sleep(10000);
// Do Init / Deinit to find out if we are freeing the memory
while(1)
{
// Init camera
if(cCamera.Initialize()==0)
{
// Rest for a while
Sleep(1500);
cCamera.Deinitialize();
// Rest for a while
Sleep(1500);
}
}
}
Я только что сделал небольшое приложение, чтобы инициализировать / деиницировать объект класса, чтобы увидеть в «диспетчере задач», возвращается ли моя память для этого приложения к его начальному значению - но это не так, он продолжает увеличиваться каждый раз, когда я инициализирую cSomeClass- так что я считаю, что у меня есть что-то, что инициализировано, но не освобождено в Deinitialize.
Обновление:
Я не думаю, что это простой рост памяти, когда приложение запускается, оно стабилизируется послеСкажем, 10 секунд: 1 МБ оперативной памяти, затем, когда while (1) срабатывает при каждой инициализации, которую я вызываю, я получаю + 120kBytes в общей памяти приложения (проверьтев диспетчере задач).
Обновление:
Спасибо Чаду - его поняли с помощью
_CrtDumpMemoryLeaks
Detected memory leaks!
Dumping objects ->
{76} normal block at 0x003F4BC8, 32 bytes long.
Data: <Logitech QuickCa> 4C 6F 67 69 74 65 63 68 20 51 75 69 63 6B 43 61
{75} normal block at 0x003F4B80, 8 bytes long.
Data: < K? > 20 4B 3F 00 00 00 00 00
{74} normal block at 0x003F4B20, 32 bytes long.
Data: < K? K? > 80 4B 3F 00 C8 4B 3F 00 CD CD CD CD CD CD CD CD
{70} normal block at 0x003F4A30, 8 bytes long.
Data: < )i > 0C 29 69 00 00 00 00 00
Object dump complete.