В неуправляемом коде C/С++, каковы наилучшие методы для обнаружения утечек памяти? И руководящие принципы кодирования, которых следует избегать? (Как будто это так просто;)
В прошлом мы использовали глупый способ: иметь приращение счетчика для каждого вызова выделения памяти и уменьшения при освобождении. В конце программы значение счетчика должно быть нулевым.
Я знаю, что это отличный способ, и есть несколько уловов. (Например, если вы освобождаете память, которая была назначена вызовом API платформы, ваш подсчет распределения не будет точно соответствовать вашему счету freeing. Конечно, мы увеличили счетчик при вызове вызовов API, которые выделяли память.)
Я ожидаю ваших впечатлений, предложений и, возможно, ссылок на инструменты, которые упрощают это.