Выделение памяти - PullRequest
       1

Выделение памяти

2 голосов
/ 25 августа 2010

Я сейчас экспериментирую с языком c, но у меня есть некоторые проблемы с распределением памяти. Через некоторое время я должен перезагрузить компьютер, потому что моя память заполнена. Есть ли способ, позволяющий компилятору сообщить мне, какие массивы не освобождаются после запуска программы?

Спасибо за ответы

Ответы [ 4 ]

3 голосов
/ 25 августа 2010

вы можете использовать valgrind для этого.

http://tldp.org/HOWTO/Valgrind-HOWTO/ http://valgrind.org/

используйте его в скомпилированной программе с параметром --leak-check = yes

2 голосов
/ 25 августа 2010

Вы ничего не сказали нам о своем компиляторе, ОС, платформе ... так что все остальное может быть только догадками.

Это звучит очень похоже на то, что у вас есть мертвые процессы или что-то в этом роде, которые продолжают пожирать вашу память на заднем плане.В Linux у вас есть top (а внутри top нажмите M ), чтобы проверить процессы, запущенные в вашей системе, и сколько памяти, времени и т. Д. Они потребляют.Сделайте это, чтобы увидеть, что происходит на вашем компьютере, и не перезагружайте его вслепую, не зная причины.

Во всех других операционных системах есть эквивалентные инструменты, которые позволяют вам проверять текущее состояние процессов.

0 голосов
/ 25 августа 2010

Вам лучше сначала проверить свой исходный код, если вы работаете в Linux, используя 'splint' для вашего источника, и это будет много отображать вас, попробуйте исправить эти предупреждения или ошибки, если все будет сделано, перекомпилируйте ваш исходный код и попробуйте'valgrind' в exacutable.

Вы можете увидеть ссылку на шины на его официальном веб-сайте, а также Valgrind.

шины: www.splint.org

valgrind: valgrind.org

Удачи ~~~

0 голосов
/ 25 августа 2010

У вас есть инструменты, которые могут рассказать вам об утечках памяти.Я боюсь, что компиляторы могут быть бесполезны для этой цели.

Вы также можете использовать DevPartner или Valgrind для анализа утечек памяти на случай, если вы их подозреваете.Но для перезапуска вашей системы из-за проблем с памятью, как долго вы запускаете приложение, прежде чем выполнить перезапуск.

Как вы узнали, что это проблема, связанная с памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...