Форум программистов, компьютерный форум CyberForum.ru

Проверишь надежность программы! - C++

Восстановить пароль Регистрация
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
23.02.2012, 13:51     Проверишь надежность программы! #1
Пишу под windows свою программу. Могу я узнать как-то, на сколько она "дырявая"? Ну без использования конкретной програмной оболочки а средствами winXP?

Добавлено через 4 минуты
т.е. не вяснять где утечка а вообще осознать что утечка есть!!
Вот я в "процессах" внизу вижу "выделение памяти".
При многократном запуске своей программы память увеличивается примерно на мегабайт. Это что значит? Что программа дырявая?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2012, 13:51     Проверишь надежность программы!
Посмотрите здесь:

C++ Подскажите. Не компилирует текст программы, запрашивает в коде мол не достающую скобку. Ниже приведен текст программы.
C++ Дан текст программы на С++...Записать в выходной файл текст программы без комментариев
Открытие файла другой программы из программы.Косяк. C++
Обеспечить надежность программы (защита от ввода неверных символов) C++
C++ Задача. Распределить заказы между предприятиями так, чтобы надежность собираемых из них устройств была наибольшей

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
samdavydov
59 / 20 / 2
Регистрация: 23.02.2012
Сообщений: 36
23.02.2012, 14:48     Проверишь надежность программы! #2
Если под многократным запуском предполагается, что старые копии не закрываются, то все так и должно быть.

Если закрываются, то причина в другом и, скорее, всего, ничего старшного не происходит.
При закрытия процесса вся связанная с ним память возвращается системе, не зависимо от "дырявости".
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
23.02.2012, 15:05  [ТС]     Проверишь надежность программы! #3
Ой ли? не скажите, уважаемый. Я конечно не оч разбираюсь в вопросе, но думаю, что "дырявость" порой можно исправить только перезагрузкой. т.к. если динамическую память взять и не вернуть системе, то даже после закрытия программы память не вернется.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.02.2012, 15:10     Проверишь надежность программы! #4
Цитата Сообщение от Андрей2011 Посмотреть сообщение
то даже после закрытия программы память не вернется.
Это кто вам такую глупость сообщил?
samdavydov
59 / 20 / 2
Регистрация: 23.02.2012
Сообщений: 36
23.02.2012, 15:13     Проверишь надежность программы! #5
Процесс не пользуется "сырой" памятью. Каждый раз, когда запускается программа, с процессом связывается некоторое виртуальное адресное пространство, в котором он живет. Эти виртуальные адреса отображаются на реальные менеджером процессов.

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

В качестве теста создайте такую программу:

C++
1
2
3
4
5
int main()
{
int* bigBuffer = new int[10000000];
return 0;
}
Она выделяет 40 мб и не освобождает их. Кажется, что если запустить её 10 раз, 400 мб "утекут", но этого не произойдет, т.к. при уничтожении процесса вся память вернется системе.
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
23.02.2012, 15:36  [ТС]     Проверишь надежность программы! #6
ага. любопытно. Ну хорошо, а как быть если вот программа поедает память все таки? можно это отследить?
samdavydov
59 / 20 / 2
Регистрация: 23.02.2012
Сообщений: 36
23.02.2012, 15:56     Проверишь надежность программы! #7
В Linux есть valgrind специально для таких задач.

Под Visual Studio есть специальная библиотека http://habrahabr.ru/blogs/cpp/82514/.
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
23.02.2012, 18:50  [ТС]     Проверишь надежность программы! #8
О, большое спасибо!!! То что нужно.
Yandex
Объявления
23.02.2012, 18:50     Проверишь надежность программы!
Ответ Создать тему
Опции темы

Текущее время: 01:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru