在C++程序中,內存需求都是在編寫程序的時候聲明變量來肯定,可是程序在運行過程當中須要動態分配內存的狀況,C++語言將運算符new和delete合成在一塊兒。程序員
中經過new關鍵字向系統內存申請。ide
C++中的動態內存分配是基於數據類型進行的。函數
delete關鍵字用於內存釋放。.net
datatype *pointer = new datatype; // 其它代碼 delete pointer;
datatype能夠是C語言的基本數據類型,也能夠是結構體,還能夠是類。指針
pointer是一個指針,指向new返回的地址。code
例如:對象
int *pi= new int; // 動態分配一個整數大小的內存 (*pi)=10; delete pi; // 釋放pi指向的內存
或內存
CGirl *pgirl=new CGirl; // 動態分配CGirl類 strcpy(pgirl->name,"西施"); pgirl->age=22; pgirl.height=168; strcpy(pgirl->sc,"火辣"); strcpy(pgirl->yz,"漂亮"); pgirl->show(); delete pgirl; // 釋放pgirl指向的內存
若是new出來的是類,至關於建立對象,因此會調用構造函數,delete的時候也會調用析構函數。開發
有些程序員認爲動態內存分配是高大上的技術,可是,在實際開發中,須要動態分配內存的場景極少,string和vector已經足夠方便,若是不是非用不可的狀況,採用動態分配內存就是給本身挖坑。博客
若是應用開發中必定要用動態內存分配技術,建議把它封裝在類中,並在析構函數中編寫釋放內存的代碼,防止內存泄漏。
C語言技術網原創文章,轉載請說明文章的來源、做者和原文的連接。
來源:C語言技術網(www.freecplus.net)
做者:碼農有道
若是這篇文章對您有幫助,請點贊支持,或在您的博客中轉發個人文章,謝謝!!!若是文章有錯別字,或者內容有錯誤,或其餘的建議和意見,請您留言指正,很是感謝!!!