C++ new用法的個人見解
在C++ 中,用new/delete操作符取代malloc/free
- 申請一個物件:
int * p = new int;
釋放:
delete p;
delete後將記憶體交還給記憶體管理器。
注意:
- new 的返回值直接就是物件指標,不用再轉換。
- new的時候可以設定初始值
new int(12);
- 申請多個物件(例如申請1024個int物件)
int * p = new int[1024];
釋放:
delete [] p;
- 注意[]指定物件個數。
- 如果new的時候用了[],則釋放的時候使用delete []操作符。
eg:
#include<iostream>
using namespace std;
int main()
{
int* p = new int[1024];
for (int i = 0; i < 1024; i++)
{
p[i] = i + 1;
}
cout << p[0] << endl;
delete [] p;
return 0;
}
在delete [] p處加斷點除錯,觀察p指向的記憶體,如下圖所示:
觀察到p指向的1024個記憶體地址都已經賦值成功(這裡注意高位高地址小端模式)。
- new 物件
new一個物件:
Student * stu = new Student;
new多個物件:
Student * stu = new Student[500];
for(int i = 0;i < 500;i ++)
{
st.[i].id = i + 1;
}
delete 後指標的值其實沒有變,但是可能已經交給其他應用程式使用了。
相關文章
- C++ new A 和 new A() 的區別詳解C++
- 【C++】C++ 記憶體分配(new,operator new)詳解C++記憶體
- C++ 記憶體分配(new,operator new)詳解C++記憶體
- AT NEW 和AT END OF的用法
- AT NEW 和AT END OF的用法。
- Java Enum 個人見解Java
- C++ 指標常見用法小結C++指標
- 深入 C++ 的 newC++
- 遞增排序個人見解排序
- c++ vector用法詳解C++
- c++ 中vector 常見用法(給初學者)C++
- ios MVC框架使用個人見解iOSMVC框架
- C++ 中名稱空間的 5 個常見用法C++
- The New C++ (轉)C++
- 關於 Laravel 的一些個人見解Laravel
- 遵循placement new的用法規範(zz)
- 全屏HTML 5適配 個人見解HTML
- Floyd演算法之個人見解演算法
- P型別詮釋----個人見解型別
- 【C++】C++用new和不用new建立類物件區別C++物件
- C++ 中 this 指標的用法詳解C++指標
- c++ 智慧指標用法詳解C++指標
- 對MQTT和CoAP的一些個人見解MQQT
- c++中::的用法C++
- 淺談,C語言編譯原理的個人見解C語言編譯原理
- C++ new 和異常C++
- 第四篇:new和delete的基本用法delete
- 詳解C++的模板中typename關鍵字的用法C++
- 詳解 C++ 的模板中 typename 關鍵字的用法C++
- C++中& 的基本用法C++
- C++ 中特殊的用法C++
- Java 列舉(enum) 詳解7種常見的用法Java
- nslookup命令的常見用法
- 常見Oracle HINT的用法Oracle
- 錯誤程式碼的個人見解以及邏輯分析題
- C malloc() free(), C++ new() delete()C++delete
- c++ 關於new檔案C++
- 幾個常見函式的非常見用法函式