轉:malloc VS new, free VS delete
記憶體操作一直以來都讓程式設計師吃足苦頭,我們也來簡單看看.
在C語言中,我們申請記憶體時先包含malloc.h標頭檔案,使用函式malloc申請,C++中依然保留了該方式,新增加了種方式new ,該運算子不僅能為基本型別變數申請空間,能給物件申請空間,對應的釋放操作則為delete,我們來看個簡單的
[@more@]// 2006-09-13-3.cpp : 定義控制檯應用程式的入口點。
// 動態開闢記憶體地址,該處要注意,要把開闢的空間釋放(free)
// C++中獨有的new,delete方式建立與刪除記憶體空間
// array = new int[arraysize],對於陣列,則需要delete[]
// 轉載請註明出處
#include
#include
using namespace std;
void main(void)
{
int arraysize;
int *array;
cout< cin>>arraysize;
array = (int*)malloc(arraysize*sizeof(int));
// array = new int[arraysize]; //這種方式只能在C++中使用,C不行
for(int i=0;i
for(int i=0;i
//如果刪除陣列則要加[],非陣列只需要delete data
//delete[] array;
cin.get();
cin.get();
}
該例中我們可以看到,兩種方式產生的效果是完全一樣的,他們到底有什麼區別呢?
我們都知道C++中引入了物件的概念,他們最大的區別就是 new ,delete 時,將會呼叫物件的構造與解構函式,new 是在malloc的基礎上擴充套件延長,之所以保留molloc只是為了相容以前的C程式,在C++中我們推薦使用new,delete
// 出處
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/220284/viewspace-1023985/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C malloc() free(), C++ new() delete()C++delete
- glibc 2.23 原始碼分析 | malloc & free原始碼
- 在malloc和free上的一天
- Playwright VS Selenium VS Puppeteer VS Cypress
- 記憶體(new delete )記憶體delete
- new 和 malloc 的區別 及使用
- vs 2017 vs code
- Airflow vs. Luigi vs. Argo vs. MLFlow vs. KubeFlowAIUIGo
- Axum vs Actix vs Rocket
- RDBMS VS XML VS NoSQLXMLSQL
- 如何解除安裝VS 2017之前版本比如VS 2013、VS2015、 VS vNext?
- [譯]await VS return VS return awaitAI
- The SQL vs NoSQL Difference: MySQL vs MongoDBMySqlMongoDB
- HashSet vs. TreeSet vs. LinkedHashSet
- Redux vs Mobx系列(-):immutable vs mutableRedux
- spring vs yii2 vs LaravelSpringLaravel
- coca 搭配 in vs on vs at | page1
- coca 搭配 in vs on vs at | page3
- JavaScript 的 4 種陣列遍歷方法: for VS forEach() VS for/in VS for/ofJavaScript陣列
- 記憶體分配詳解 malloc, new, HeapAlloc, VirtualAlloc,GlobalAlloc記憶體
- 細說new和malloc的十大區別
- ABAP vs Java, 蛙泳 vs 自由泳Java
- When to use var vs let vs const in JavaScriptJavaScript
- Tomcat vs Jetty vs Undertow效能對比TomcatJetty
- 微軟常用執行庫合集下載(vs2008(sp)/vs2010(sp)/vs2012/vs2013/vs2015/vs2017)包含32位/64位微軟
- 測試速度比較:Selenium vs Playwright vs Cypress vs Puppeteer vs TestCafe
- javascript — == vs ===JavaScript
- vs 2017
- PostgreSQL DBA(6) - SeqScan vs IndexScan vs Bit...SQLIndex
- PostgreSQL DBA(131) - Develop(numeric vs float vs int)SQLdev
- 【演算法】轉載:Iterative vs. Recursive Approaches演算法APP
- <七>深入理解new和delete的原理delete
- 計數排序vs基數排序vs桶排序排序
- iOS:原生應用 VS Flutter VS GICXMLLayout 比較iOSFlutterXML
- PostgreSQL DBA(121) - pgAdmin(HA:PAF vs repmgr vs Patroni)SQL
- 如何實現 “defer”:Go vs Java vs C/CPPGoJava
- Flutter VS React Native VS Native,誰才是效能之王FlutterReact Native
- Go vs Java vs C# 語法對比GoJavaC#
- 資料湖 vs 倉庫 vs 資料庫資料庫