Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Утекает память

11K
18 мая 2005 года
Max Pechersky
2 / / 18.05.2005
Здравствуйте!

Утекает память и не могу понять как. Простенькое многопоточное приложение.
Используются критические секции и ждущие таймеры, нити. В одном функции
память из кучи выделяется в другой освобождается, тут все просто, и мне
кажется что работает правильно.

Необычность (нестандартность) ситуации заключается в следующем: Диспетчер
Задач показывает что процесс моей программы использует "нормальное" количество
памяти не больше не меньше. Но общее количество спользуемой памяти растет,
похоже его съедает система. После выгрузки моей программы количество
используемой памяти резко снижается (на 500 — 1000 Мб), хотя по показанием
того же Диспетчера задач мой процесс занимет 1,5 — 3 Мб.

Работа операциооной системы также сопровождается странностями: попытки запустить
приложения приводят к сообщению " У вас недостаточно прав" итд. После выгрузки моей
программы, странности исчезают.
2.4K
23 мая 2005 года
nihil
56 / / 28.02.2004
Цитата:
Originally posted by Max Pechersky
Здравствуйте!

Утекает память и не могу понять как. Простенькое многопоточное приложение.
Используются критические секции и ждущие таймеры, нити. В одном функции
память из кучи выделяется в другой освобождается, тут все просто, и мне
кажется что работает правильно.

Необычность (нестандартность) ситуации заключается в следующем: Диспетчер
Задач показывает что процесс моей программы использует "нормальное" количество
памяти не больше не меньше. Но общее количество спользуемой памяти растет,
похоже его съедает система. После выгрузки моей программы количество
используемой памяти резко снижается (на 500 — 1000 Мб), хотя по показанием
того же Диспетчера задач мой процесс занимет 1,5 — 3 Мб.

Работа операциооной системы также сопровождается странностями: попытки запустить
приложения приводят к сообщению " У вас недостаточно прав" итд. После выгрузки моей
программы, странности исчезают.




Ну, было бы неплохо на исходник взглянуть... =) может де чего пропустил/неучел... мало ли... По поводу поведения винды (если ты под винду пишешь) при использовании всяких нитей, потоков Рихтер кое-чего раписал, советую почитать...

356
24 мая 2005 года
molnij
159 / / 20.06.2000
Цитата:
Originally posted by Max Pechersky
После выгрузки моей программы количество
используемой памяти резко снижается (на 500 — 1000 Мб), хотя по показанием того же Диспетчера задач мой процесс занимет 1,5 — 3 Мб.
Работа операциооной системы также сопровождается странностями: попытки запустить приложения приводят к сообщению " У вас недостаточно прав" итд. После выгрузки моей программы, странности исчезают.


возможно где-то либо процессы порождают друг-друга безостановочно - просто заканчиваются системные ресурсы и винде становиться плохо

5.2K
18 июня 2005 года
HuntGT
35 / / 17.12.2004
Цитата:
Originally posted by Max Pechersky
Здравствуйте!

Утекает память и не могу понять как. Простенькое многопоточное приложение.
Используются критические секции и ждущие таймеры, нити. В одном функции
память из кучи выделяется в другой освобождается, тут все просто, и мне
кажется что работает правильно.

Необычность (нестандартность) ситуации заключается в следующем: Диспетчер
Задач показывает что процесс моей программы использует "нормальное" количество
памяти не больше не меньше. Но общее количество спользуемой памяти растет,
похоже его съедает система. После выгрузки моей программы количество
используемой памяти резко снижается (на 500 — 1000 Мб), хотя по показанием
того же Диспетчера задач мой процесс занимет 1,5 — 3 Мб.

Работа операциооной системы также сопровождается странностями: попытки запустить
приложения приводят к сообщению " У вас недостаточно прав" итд. После выгрузки моей
программы, странности исчезают.


Для чего у тебя прога?

2
21 июня 2005 года
squirL
5.6K / / 13.08.2003
память выделяемая из хипа при помощи malloc (new) не возвращается системе, после free (delete). система сама забирает себе сколько нужно, при необходимости. реально память освобождается только по завершении программы. так, по крайней мере обстоит дело в UNIX, с его реализацией функций работы с хипом. судя по всему винда тоже делает нечто подобное.
10K
28 июня 2005 года
лАмер
25 / / 27.06.2005
Цитата:
Originally posted by squirL
память выделяемая из хипа при помощи malloc (new) не возвращается системе, после free (delete). система сама забирает себе сколько нужно, при необходимости. реально память освобождается только по завершении программы. так, по крайней мере обстоит дело в UNIX, с его реализацией функций работы с хипом. судя по всему винда тоже делает нечто подобное.



Еще как возвращается.

 
Код:
void* buffer = NULL;
int size = 20000000;
buffer = malloc(size);
while(--size)((char*)buffer)[size]='g';
free(buffer);
return 0;

поставь брейк на free и запусти диспетчер, после вызова free память возвращается системе до копейки.
до вызова 21 952 KB
после 2 400 KB
2
29 июня 2005 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by лАмер
Еще как возвращается.
 
Код:
void* buffer = NULL;
int size = 20000000;
buffer = malloc(size);
while(--size)((char*)buffer)[size]='g';
free(buffer);
return 0;

поставь брейк на free и запусти диспетчер, после вызова free память возвращается системе до копейки.
до вызова 21 952 KB
после 2 400 KB


ОС какая?

10K
29 июня 2005 года
лАмер
25 / / 27.06.2005
Цитата:
Originally posted by squirL
ОС какая?


XP Pro SP2

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог