內存是程序運行必不可少的資源,由操做系統分配和管理。做爲程序員,咱們一般作的只能是申請和歸還。本文主要介紹C++內存的申請和釋放(歸還),以及注意事項。ios
申請 new程序員
釋放 deletespa
申請內存:操作系統
int *p = new int; // 定義一個指針,來接收new申請到的地址
釋放內存:指針
delete p;
塊內存的申請和釋放:code
//申請 int *arr = new int[10]; //釋放 delete []arr;
3.1 配套使用blog
咱們知道在c語言中內存的申請和釋放是malloc 和free完成:內存
//申請 void *malloc(size_t size); //釋放 void free(void *memblock);
可是在C++中使用的是new和delete;若是使用C語言的方式申請,就得用C語言的方式釋放;使用C++的方式申請,就得用C++的方式釋放;配套使用。不然沒法經過編譯。資源
3.2 內存可能申請失敗,須要有異常處理字符串
int *p = new int[1000]; if (NULL == p) { //內存分配失敗 }
3.3 釋放內存須要將指針置爲空
int *p = new int[1000]; if (NULL == p) { //內存分配失敗 //異常處理 } delete []p; //釋放 p = NULL;
除了釋放內存,還得將指針置爲空;不然指針還指向以前的內存,若是不當心再執行了delete []p;操做,就會致使同一塊內存被重複回收兩次,將引起嚴重錯誤。
#include <string.h> #include <iostream> using namespace std; int main(void) { //在堆中申請100個char類型的內存 char *str = new char[100]; //拷貝Hello C++字符串到分配的堆中的內存中 strcpy(str, "Hello C++"); //打印字符串 cout << str << endl; //釋放內存 delete []str; str = NULL; return 0; }