new delete operators c with examples
Разгледайте всичко за нови / изтриване на оператори в C ++.
Вече видяхме променливи и статични масиви в C ++ в нашите по-ранни уроци.
Що се отнася до паметта, разпределена на променливите и масивите, това е статичната памет, която се разпределя от компилатора в зависимост от типа данни (в случай на променливи) и размерите, предвидени за масивите.
Разпределената от компилатора памет се разпределя в стека. Но в повечето случаи може да не сме наясно с точното количество памет, от което се нуждаем.
=> Прочетете Популярната серия за обучение на C ++ тук.
Това, което бихме направили, е да разпределим и разпределим толкова памет, колкото искаме, както и когато и когато го искаме. Това става чрез динамично разпределение на паметта. За разлика от статичното разпределение, динамично разпределената памет се разпределя върху купчината.
Динамичното разпределение на паметта е полезно, тъй като можем да разпределим памет с променлив размер, което не можем да постигнем с разпределената памет на компилатора. Ние имаме гъвкавостта да разпределяме паметта, когато имаме нужда, и да я разпределяме, когато не ни е необходима.
Но освен тези употреби, ние също трябва да имаме предвид, че в случай на динамично разпределена памет, отговорността на потребителя е да разпредели паметта. Ако забравим да де-разпределим паметта, това води до изтичане на памет, при което паметта не се освобождава, докато програмата не приключи.
Това може да доведе до използване на твърде много памет и по този начин да доведе до сериозни тесни места.
Какво ще научите:
- Динамично разпределение на паметта
- „Новият“ оператор
- Използване на „новия“ оператор с масиви
- Операторът за изтриване
- Заключение
- Препоръчително четене
Динамично разпределение на паметта
Езикът C използва функциите ‘malloc’, ‘calloc’ и ‘realloc’ за динамично разпределение на паметта. За да се разпредели динамично разпределената памет с тези функции, той използва „безплатно“ извикване на функция. Езикът C ++ също поддържа тези функции от езика C за разпределяне / де-разпределение на паметта.
Освен тези функции, C ++ представя два нови оператора, които са по-ефективни за управление на динамичната памет. Това са „нов“ оператор за разпределяне на паметта и „изтриване“ оператор за премахване на паметта.
В този урок ще научим повече за нови и изтриващи оператори на език C ++.
„Новият“ оператор
Операторът “new” разпределя памет за променлива или друг обект в купчина.
Общият синтаксис на оператора “new” е:
pointer_variable_of_data_type = new data type;
Споменатият по-горе тип данни може да бъде всеки валиден тип данни, поддържан от C ++. Това може да бъде вграден тип данни или всеки дефиниран от потребителя тип данни, включително класове и структури.
Например,
най-добрият безплатен софтуер за почистване за Windows 10
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;
Обърнете внимание на оператора на индекс, използван с оператора за изтриване. Това е така, тъй като, тъй като сме разпределили масива от елементи, трябва да освободим всички местоположения.
Вместо това, ако бяхме използвали изявлението,
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”, за да разпределим памет за променлива, масиви и както и инициализираме друга променлива със стойност. След това изтриваме тези обекти с помощта на оператора за изтриване.
Заключение
Това е всичко за новите и изтриващи оператори на C ++, що се отнася до стандартните типове данни. Също така можем да използваме нови и изтриващи оператори за дефинирани от потребителя типове данни като класове и структури.
Ще научим повече за използването на тези оператори за създаване на обекти, когато научим обектно-ориентирано програмиране с помощта на C ++.
коя е най-добрата операционна система windows
=> Погледнете тук ръководството за начинаещи C ++.
Препоръчително четене
- Примери за аритметични и булеви оператори на скрипт на Unix Shell
- MongoDB Актуализиране и изтриване на документ с примери
- Оператори, типове и примери за C ++
- Оператори на Python
- Урок за Python DateTime с примери
- Изрежете командата в Unix с примери
- Сортиране на балончета в C ++ с примери
- Синтаксис на командата Unix Cat, Опции с примери