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

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

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

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

30.06.2009, 21:47. Просмотров 570. Ответов 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 байта зарезервирован другой участок, но как же быть с большими файлами которые загружаются в память размером по нескольку мегабайт, ведь если они не будут впихиваться в освобожденные участки памяти они будут занимать новые, и высвобождение памяти не будет иметь смысла))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2009, 21:47     Не понимаю логики освобождения памяти
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Необходим совет при освобождения памяти динамического массива - C++
Имеется код: -создание трехмерного динамического массива float ***Kadr; Kadr = new float **; for (int i = 0; i < D->Np; i++)...

Адреса памяти, в которых происходит выделение, и нет освобождения - C++
Добрый день форумчане. Уже несколько недель ломаю себе голову над одной задачей. За меня делать ничего не прошу, так как в принципе проект...

Написать функции для работы с массивом - выделения/освобождения памяти, консольного ввода/вывода - C++
Напишите функции: 1) выделяющую память для массива данных типа float, 2) заполняющую ячейки данными с клавиатуры, 3) выводящую...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
30.06.2009, 21:52     Не понимаю логики освобождения памяти #2
delete/free (а delete нередко в компиляторах реализован через free) именно освобождает память, а не изменяет ее (но на это полагаться нельзя). Память просто помечается, как никем не занятая. Но данные там не изменяются (опять же не всегда, но в большинстве случаев). Когда я буду работать с программой, выделять, освобождать память, то мой код снова может использовать этот участок.
Yandex
Объявления
30.06.2009, 21:52     Не понимаю логики освобождения памяти
Ответ Создать тему
Опции темы

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