Jakie są najlepsze praktyki wykrywania wycieków pamięci w niezarządzanym kodzie C / C ++? I wskazówek dotyczących kodowania, których należy unikać? (Jakby to było takie proste;)
W przeszłości używaliśmy trochę głupiego sposobu: dysponowania przyrostem licznika dla każdego wywołania alokacji pamięci i zmniejszaniem podczas zwalniania. Pod koniec programu stan licznika powinien wynosić zero.
Wiem, że to nie jest świetny sposób i jest kilka haczyków. (Na przykład, jeśli zwalniasz pamięć, która została przydzielona przez wywołanie interfejsu API platformy, liczba przydziałów nie będzie dokładnie odpowiadać liczbie zwolnień. Oczywiście zwiększaliśmy licznik podczas wywoływania wywołań API, które przydzielają pamięć).
Oczekuję Waszych doświadczeń, sugestii i być może odniesień do narzędzi, które to upraszczają.