|
||||||||||||||||||||||||||||||||
Динамическая память ⇐ ПредыдущаяСтр 2 из 2 Динамическая память Память в C++ разделена на 2 части: Стек: Все локальные переменные Куча: Неиспользованная память, которая может быть использована, когда программа динамически выделяет память
Иногда, мы не знаем, сколько памяти понадобится, для хранения чего-либо. Оператор new обеспечивает динамическое выделение памяти в куче
new int;
Выделенный адрес может быть сохранён в указателе, который в последствии может быть разадресован для доступа к переменной
int *p = new int; *p = 5; // У нас есть динамически выделенная память для целых чисел, а затем ей присвоено значение 5
При этом, указать p хранится в стеке, а значение 5 вы куче.
Для локальных переменных в стеке управление осуществляется автоматически. В куче, необходимо вручную управлять памятью и удалять её оператором delete, когда она не требуется.
delete p;
Это выражение удаляет память, на которую указывает ponter int *p = new int; // Объявляем указатель на новую переменную *p = 5; // Присваиваем указателю значение 5 cout << *p << endl; // Используем указатель (пример) delete p; // Освобождаем память (удаляем указатель)
Оператор delete освобождает память, выделенную для переменной, но сам указательне удаляет. Указатели, которые указывают на несуществующую область памяти, называютсявисячими указателями int *p = new int(5); // Объявляем указатель, указывающий на динамическую переменную со значением 5 delete p; // Освобождаем память. Теперь p - висячий указатель p = new int; // Заново используем для нового адреса
Указатель NULL – это константа, со значением равным нулю. Присваивание NULL указателю при его объявлении – хорошая идея, если у вас нет точного адреса присваивания. Указатель, к которому присвоен указатель NULL – пустой указатель. int *p = NULL; // Пустой указатель p = new int[20]; // Выделяем память delete [] p; // Удаляем массив, на который указывает p
sizeof sizeof – оператор, с помощью которого можно узнать размер переменной/массива в байтах int a=51661; long b=24556671; cout << "\n" << sizeof(a) << "\n"; // Выводит 4 cout << "\n" << sizeof(b) << "\n"; // Выводит 8
https://tohtml.com/cpp/
|
||||||||||||||||||||||||||||||||
|