Разделы презентаций


Особенности использования памяти в языке С++ Классы памяти

Содержание

В C++ имеется четыре спецификатора класса памяти: auto, register,  extern и static. Класс памяти идентификатора определяет период времени, в течение  которого этот идентификатор существует в памяти.

Слайды и текст этой презентации

Слайд 1Особенности использования памяти в языке С++ Классы памяти
Выполнила студентка группы ИС-16-01
Асрарова

Луиза
Проверила
Коваленко М.В.

Особенности использования памяти в языке С++ Классы памятиВыполнила студентка группы ИС-16-01Асрарова ЛуизаПроверилаКоваленко М.В.

Слайд 2В C++ имеется четыре спецификатора класса памяти: auto, register,  extern и static.
Класс памяти идентификатора определяет

период времени, в течение  которого этот идентификатор существует в памяти.

В C++ имеется четыре спецификатора класса памяти: auto, register,  extern и static. Класс памяти идентификатора определяет период времени, в течение  которого этот

Слайд 3Категории классов памяти
Спецификаторы класса памяти могут быть разбиты на два

класса:
 автоматический класс памяти
статический класс памяти

Категории классов памяти 	Спецификаторы класса памяти могут быть разбиты на два класса: автоматический класс памяти статический класс памяти

Слайд 4 Для объявления переменных автоматического класса памяти используются ключевые слова auto  и register. Такие переменные

создаются при входе в блок, в котором они объявлены, существуют, пока

блок активен, и уничтожаются, когда программа  выходит из блока. Ключевые слова extern и static объявляют идентификаторы для переменных статического класса памяти и для функций. Переменные статического класса памяти существуют с момента, когда программа начинает исполняться, и сохраняются в течение всего периода ее выполнения. Память для переменной статического класса памяти выделяется в начале исполнения  программы.
Для объявления переменных автоматического класса памяти используются ключевые слова auto  и register. Такие переменные создаются при входе в блок, в

Слайд 5Иерархия классов памяти

Иерархия классов памяти

Слайд 6Спецификаторы:
Auto – авто выделяемая локальная память. Спецификатор может быть задан

для объектов, определённых внутри блока (в теле функции, внутри блока

for, внутри класса). Этим объектом класса auto память выделяется при входе в блок и уничтожается при выходе.
for (int i=0, i<10, i++0
{cout << i;}
cout << i, //ошибка
Register – авто выделяемая локальная регистровая память. Используются регистры, а не участки основной памяти. Если по какой-либо причине в момент начала выполнения кода в данном блоке операторов регистры оказываются занятыми, транслятор обеспечивает с этими объектами обращение, как с объектами класса auto. 
Спецификаторы:Auto – авто выделяемая локальная память. Спецификатор может быть задан для объектов, определённых внутри блока (в теле

Слайд 7 Static – В C++ этот спецификатор имеет два значения.

Первое означает, что определяемый объект располагается по фиксированному адресу. Тем

самым обеспечивается существование объекта с момента его определения до конца выполнения программы. Второе значение означает локальность. Объявленный со спецификатором static локален в одном программном модуле (то есть, недоступен из других модулей многомодульной программы) или в классе. Может использоваться в объявлениях вне блоков и функций. Также используется в объявлениях, расположенных в теле функций и в блоках операторов.
Extern – глобальные объекты, определенные до или после блока main, доступны во всех модулях программы. Присваивается всем функциям, структурам, объединениям и классам. Спецификатор внешнего статического класса памяти.
Static – В C++ этот спецификатор имеет два значения. Первое означает, что определяемый объект располагается по

Слайд 9 В С работать с динамической памятью можно при помощи соответствующих

функций распределения памяти (calloc, malloc, free), для чего необходимо подключить библиотеку
#include 
С++ использует

новые методы работы с динамической памятью при помощи операторов new и delete:
new — для выделения памяти;
delete — для освобождения памяти.
Оператор new используется в следующих формах:
new тип;  // для переменных
new тип[размер];  // для массивов
Память может быть распределена для одного объекта или для массива любого типа, в том числе типа, определенного пользователем. Результатом выполнения операции new будет указатель на отведенную память, или нулевой указатель в случае ошибки.
В С работать с динамической памятью можно при помощи соответствующих функций распределения памяти (calloc, malloc, free), для чего необходимо

Слайд 10int *ptr_i; double *ptr_d; struct person *human; ... ptr_i = new int; ptr_d = new double[10]; human = new struct person;
Память, отведенная в

результате выполнения new, будет считаться распределенной до тех пор, пока не

будет выполнена операция delete.
Освобождение памяти связано с тем, как выделялась память – для одного элемента или для нескольких. В соответствии с этим существует и две формы применения delete:
delete указатель;  // для одного элемента
delete[] указатель;  // для массива
int *ptr_i; double *ptr_d; struct person *human; ... ptr_i = new int; ptr_d = new double[10]; human = new struct person;	Память, отведенная в результате

Слайд 11 Например, для приведенного выше случая, освободить память необходимо следующим образом:
delete ptr_i; delete[]

ptr_d; delete human;
Освобождаться с помощью delete может только память, выделенная оператором new.

Например, для приведенного выше случая, освободить память необходимо следующим образом:delete ptr_i; delete[] ptr_d; delete human;	Освобождаться с помощью delete может только память,

Слайд 12Пример Создание динамического массива
#include  using namespace std; int main() {
  int size;
  int *dan;
  system("chcp 1251");
  system("cls");
 

cout size;
  dan = new

int[size];
 

for (int i=0; i    cout << "dan[" << i << "]= ";
    cin >> dan[i];
  }
  for (int i=0; i    cout << dan[i] << " ";
  delete[] dan;
  cin.get(); cin.get();
  return 0; }

Пример Создание динамического массива#include  using namespace std; int main() {  int size;  int *dan;  system(

Слайд 13 Указатель dan – базовый адрес динамически распределяемого массива, число элементов которого равно size.

Операцией delete освобождается память, распределенная при помощи new.

Указатель dan – базовый адрес динамически распределяемого массива, число элементов которого равно size. Операцией delete освобождается память, распределенная при помощи new.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика