new delete operators c with examples
Дізнайтеся про все про нові / видалити оператори в C ++.
Ми вже бачили змінні та статичні масиви в C ++ у наших попередніх підручниках.
Що стосується пам'яті, виділеної змінним та масивам, то саме статична пам’ять виділяється компілятором залежно від типу даних (у разі змінних) та розмірів, передбачених для масивів.
Пам'ять, виділена компілятором, виділяється в стеку. Але в більшості випадків ми можемо не знати точного обсягу пам’яті, яка нам потрібна.
=> Ознайомтесь з Популярною серією навчальних програм C ++ тут.
Що б ми зробили, це виділити та де-розподілити стільки пам'яті, скільки ми хочемо, а також як і коли ми цього хочемо. Це робиться шляхом динамічного розподілу пам'яті. На відміну від статичного розподілу, динамічно виділена пам'ять виділяється в купі.
Динамічне розподіл пам'яті корисно, оскільки ми можемо виділити пам’ять змінного розміру, чого ми не можемо досягти за допомогою виділеної пам’яті компілятора. Ми маємо гнучкість розподілу пам’яті, коли нам це потрібно, та її розподілення, коли вона нам не потрібна.
Але окрім цих способів використання, ми також повинні пам’ятати, що у випадку динамічно розподіленої пам’яті користувач зобов’язаний де-розподілити пам’ять. Якщо ми забудемо де-розподілити пам'ять, то це спричинить витік пам'яті, де пам'ять не буде звільнена до завершення програми.
Це може призвести до використання занадто великої кількості пам'яті і, отже, серйозних вузьких місць.
Що ви дізнаєтесь:
- Динамічне розподіл пам'яті
- 'Новий' Оператор
- Використання «нового» оператора з масивами
- Оператор видалення
- Висновок
- Рекомендована література
Динамічне розподіл пам'яті
Мова C використовує функції «malloc», «calloc» та «realloc» для динамічного розподілу пам'яті. Для того, щоб динамічно розподілити пам’ять, яка динамічно розподіляється за допомогою цих функцій, вона використовує „безкоштовний” виклик функції. Мова С ++ також підтримує ці функції з мови С для виділення / де-розподілу пам'яті.
Окрім цих функцій, C ++ представляє два нових оператори, які ефективніше управляють динамічною пам'яттю. Це „новий” оператор для розподілу пам’яті та „видалення” для видалення пам'яті.
У цьому підручнику ми дізнаємось більше про нові та видаляючі оператори мовою С ++.
'Новий' Оператор
Оператор “new” виділяє пам’ять для змінної або будь-якої іншої сутності в купі.
Загальним синтаксисом оператора “new” є:
pointer_variable_of_data_type = new data type;
Згаданий вище тип даних може бути будь-яким дійсним типом даних, що підтримується C ++. Це може бути вбудований тип даних або будь-який визначений користувачем тип даних, включаючи класи та структури.
Наприклад,
перетворити символ у ціле число c ++
int *ptr = NULL; ptr = new int();
У наведеному вище прикладі ми оголосили змінну вказівника ‘ptr’ цілим числом та ініціалізували її нулем. Потім за допомогою оператора “new” ми виділяємо пам’ять за змінною “ptr”. Якщо пам’ять доступна в купі, друге твердження буде успішним. Якщо пам'ять недоступна, тоді новий оператор видасть виняток “std :: bad_alloc”.
Тому доцільніше перевірити, чи пам'ять успішно виділяється новим оператором, перш ніж використовувати цю змінну або сутність у програмі.
Ми також можемо ініціалізувати змінні, використовуючи новий оператор, наступним чином:
ptr = new int(10);
У наведеному вище прикладі покажчик змінної “ptr” є виділеною пам’яттю з використанням нового оператора, і одночасно, призначене значення дорівнює 10. Це ще один спосіб ініціалізації в C ++.
Використання «нового» оператора з масивами
Ще одним використанням оператора “new” є виділення пам’яті для масивів. Тут ми вказуємо кількість елементів, які слід виділити для масиву.
Приклад розподілу елементів масиву за допомогою оператора “new” наведено нижче:
int* myarray = NULL; myarray = new int(10);
Тут новий оператор виділяє 10 неперервних елементів цілого типу типу до змінної покажчика myarray і повертає покажчик на перший елемент myarray.
Оператор видалення
Пам'ять, що виділяється динамічно за допомогою нового оператора, програміст повинен явно звільнити. Для цього нам надається оператор «видалити».
Загальний синтаксис оператора видалення:
delete pointer_variable;
Отже, ми можемо звільнити пам’ять, виділену вище змінної ptr, наступним чином:
delete ptr;
Цей оператор звільняє пам'ять, виділену змінній 'ptr', назад до пулу пам'яті.
Ми також можемо використовувати оператор delete, щоб звільнити пам’ять, виділену масивам.
Наприклад,пам'ять, виділену вище масиву myarray, можна звільнити наступним чином:
delete() myarray;
Зверніть увагу на оператор нижчого індексу, який використовується з оператором видалення. Це тому, що, оскільки ми виділили масив елементів, нам потрібно звільнити всі місця розташування.
Натомість, якби ми використали заяву,
запустити .jar файлові вікна 10
delete myarray;
Ми знаємо, що myarray вказує на перший елемент масиву, тому наведене вище твердження видалить лише перший елемент масиву. Використання індексу “()” вказує на те, що змінна, пам’ять якої звільняється, є масивом, і вся виділена пам’ять має бути звільнена.
У наведеному нижче прикладі програмування показано використання нових та видалення операторів в C ++.
// Example program #include #include using namespace std; int main() { int *ptr = NULL; ptr = new int(); int *var = new int(12); if(!ptr) { cout<<'bad memory allocation'< Вихід:
пам’ять успішно виділена
* ptr = 10
* var = 12
значення myarray: 1 2 3 4 5 6 7 8 9 10
Знімок екрана для цього наведено нижче.

У наведеному вище прикладі коду ми продемонстрували використання операторів new та delete. Ми використовували оператор “new” для виділення пам’яті для змінної, масивів, а також для ініціалізації іншої змінної зі значенням. Потім ми видаляємо ці сутності за допомогою оператора delete.
Висновок
Це все про нові та оператори видалення C ++, що стосується стандартних типів даних. Ми також можемо використовувати нові та видалити оператори для визначених користувачем типів даних як класи та структури.
Ми дізнаємось більше про використання цих операторів для створення об’єктів, коли вивчимо об’єктно-орієнтоване програмування за допомогою C ++.
=> Погляньте на посібник для початківців C ++ тут.
Рекомендована література
- Приклади арифметичних та булевих операторів сценарію оболонки Unix
- MongoDB Оновлення та видалення документа з прикладами
- Оператори, типи та приклади на C ++
- Оператори Python
- Підручник з Python DateTime із прикладами
- Вирізати команду в Unix з прикладами
- Сортування міхура в C ++ із прикладами
- Синтаксис команд Unix Cat, варіанти з прикладами