Я заметил, что нативное приложение C ++, над которым я работаю, имеет довольно большой объем памяти (20 МБ) даже до того, как оно входит в любой мой код.
(Я имею в виду меру «закрытых байтов» в Windows, которая, как я понимаю, является наиболее полезным показателем).
Я поместил точку останова в первую строку функции "main ()" и, конечно же, занимая ее, занимает 20 МБ.
Размер EXE-файла составляет всего пару мегабайт, поэтому он не учитывается.
Я также намеренно удалил все библиотеки DLL, чтобы доказать, что они не являются причиной. Как и ожидалось, он получает сообщение «Dll not found», но его размер по-прежнему составляет 20 МБ!
Итак, я подумал, что, возможно, причиной были статически инициализированные объекты.
Итак, я добавил точки останова как для "new", так и для "malloc". При первом обращении к ним (для первого статического инициализатора) память уже составляет 20 МБ.
У кого-нибудь есть идеи о том, как я могу диагностировать, что съедает эту память?
Поскольку это, кажется, память вне обычной парадигмы new / malloc, я изо всех сил пытаюсь понять, как отлаживать.
Приветствия
John