Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
65 / 71 / 9
Регистрация: 25.06.2009
Сообщений: 244
1

Не понимаю логики освобождения памяти

30.06.2009, 21:47. Просмотров 717. Ответов 1
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
char* a=new char[4]; //выделяет на 02EF2DD0
char* b=new char[4]; 
 
delete [] a;
 
a=new char[10000]; // выделяет на 02EF4B50
// при этом значения по адресу 02EF2DD0 остаются неизменными
понятно что 10к ячеек нельзя выделить по прежнему адресу 02EF2DD0 так как через 4 байта зарезервирован другой участок, но как же быть с большими файлами которые загружаются в память размером по нескольку мегабайт, ведь если они не будут впихиваться в освобожденные участки памяти они будут занимать новые, и высвобождение памяти не будет иметь смысла))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2009, 21:47
Ответы с готовыми решениями:

Не могу разобраться с указателями(не понимаю сути освобождения памяти)
Вот я тоже дуб в указателях... помогите пожалуйста кому не лениво... с горем пополам заработал...

С++ Проверка освобождения памяти
Добрый день. На начальном курсе С++ получил такую задачу: Написать функцию, которая получает...

Стратегия выделения/освобождения памяти
здравствуйте господа. есть такой вопрос. пусть есть класс например Bitmap - несжатое растровое...

Ошибка освобождения памяти new/delete
При выполнении оператора deleterez вылетает ошибка BLOCK_TYPE_IS_VALID(pHead->nBlockUse) ...

1
Почетный модератор
7327 / 2593 / 268
Регистрация: 29.07.2006
Сообщений: 13,582
30.06.2009, 21:52 2
delete/free (а delete нередко в компиляторах реализован через free) именно освобождает память, а не изменяет ее (но на это полагаться нельзя). Память просто помечается, как никем не занятая. Но данные там не изменяются (опять же не всегда, но в большинстве случаев). Когда я буду работать с программой, выделять, освобождать память, то мой код снова может использовать этот участок.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2009, 21:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверка освобождения памяти (new, delete)
Всем привет. Программы помаленьку становятся сложнее. Появляются самодельные контейнеры внутри...

Деструкторы, аналоги освобождения памяти
Доброго времени суток. Возник следующий вопрос. Какие, помимо деструкторов, способы очистки памяти...

Указатель после освобождения памяти
Стивен Прата, глава 4, раздел "Освобождение памяти с помощью операции delete" Я пытаюсь понять....

Нюансы выделения и освобождения памяти (структуры)
struct point { int a; point *next; } point *p=new point Я освобожу всю память которая...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.