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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DeadRipper
64 / 70 / 3
Регистрация: 25.06.2009
Сообщений: 244
#1

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

30.06.2009, 21:47. Просмотров 585. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2009, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не понимаю логики освобождения памяти (C++):

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

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

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

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

Ошибка освобождения памяти new/delete - C++
При выполнении оператора deleterez вылетает ошибка BLOCK_TYPE_IS_VALID(pHead->nBlockUse) #include <iostream> using namespace std;...

Указатель после освобождения памяти - C++
Стивен Прата, глава 4, раздел "Освобождение памяти с помощью операции delete" Я пытаюсь понять. Написал: #include <iostream> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
30.06.2009, 21:52 #2
delete/free (а delete нередко в компиляторах реализован через free) именно освобождает память, а не изменяет ее (но на это полагаться нельзя). Память просто помечается, как никем не занятая. Но данные там не изменяются (опять же не всегда, но в большинстве случаев). Когда я буду работать с программой, выделять, освобождать память, то мой код снова может использовать этот участок.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2009, 21:52
Привет! Вот еще темы с ответами:

Переполнение стека во время освобождения памяти - C++
Здравствуйте! СТолкнулся с такой проблемой, что при работе деструктора программа аварийно завершается, а в дебаггере появляется сообщение о...

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

Функциии динамического выделения и освобождения памяти - C++
Необходим написать функции выделения и освобождения памяти под двумерный динамический массив. Причем освобождение должн быть не сразу для...

Использование __try __finaly для освобождения памяти - C++
Здравствуйте. Подскажите, как возможно использовать конструкцию __try, __finaly для освобождения ресурсов в одном месте. Пример: ...


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

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

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