ПредишенСледващото

Откриване на изтичане на памет в С

Когато пишете програми, които използват динамично разпределение на паметта (изчистване функция, calloc, презаделяне, безплатно), трябва да се помни, за да освободите всички някога разпределена памет. "Изтичане на памет" се отнася до ситуация, в която по някакви причини, програмата не освобождава памет, която вече не се използва. Трябва да бъде в състояние да открие тези проблеми!

По-долу са практически съвети за откриване на течове памет в зависимост от компилатора.

Microsoft Visual C Compiler / MS Windows

В началото на програмата си, добавете следния ред (това е важно да се съобразят със заповедта!)

и след това се добавят към края на своя основна функция повикване

Тази функция отпечатва съобщение в прозореца Output с информация за изтичане на памет, ако има такива.

По-долу е пример за такова съобщение

Следната информация за всяка памет течове: мястото във файла, където се разпределя паметта, размерът на заделената памет и съдържанието му.

GNU Compiler Collection / Linux

В началото на програмата си, добавете следния ред

и в самото начало на основната функция разговор

След това просто стартирате програмата и след mtrace на полезност

Заключение mtrace полезност предоставя информация за изтичане на памет и местоположението на файла, където е разпределен на паметта, както и разпределени размер на паметта.

GNU Compiler Collection (MinGW) / MS Windows

Промени в сорс кода на програмата се изисква. Трябва да компилирате програмата със следните флагове:

След това стартирате програмата с помощта на д-р памет:

Изходът съдържа информация за съществуващите проблеми при работа с динамична памет, по-специално за изтичане на памет:

Можете да намерите информация за източника на изтичане на изходния код на програмата и мястото във файла.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!