釋放容器記憶體的三種方式

2021-10-09 06:42:40 字數 1113 閱讀 2460

首先明確容器中的 size( ) 函式是用來返回當前容器中的元素的個數;而 capacity( ) 函式則是用來返回容器記憶體空間即緩衝區的大小;

1.方法一:直接宣告同乙個匿名容器型別與原有容器交換,匿名容器會自動銷毀;vector( ).swap(num);

2.方法二:先宣告乙個臨時物件,然後與目標容器交換資料:vectortemp; (temp).swap(num); 臨時物件未被初始化,其緩衝區大小為0,沒有資料,與目標物件交換資料,則容器num中的緩衝區就沒有了;

注意:不要寫成這種形式,vector(temp).swap(num); 因為這個temp容器之前並沒有定義;編譯器會報錯

3.方法三:先將目標容器的記憶體清空,再利用swap函式與原有容器進行交換,即:num.clear( ); vector(num).swap(num);

注意:單單使用clear( )函式不會清空記憶體,只是把容器中儲存的資料清除掉;使用clear()函式後容器內的元素個數為0,即size()函式返回的結果為0;但是記憶體沒有釋放,即capacity()函式的返回結果不為0

下面附上上述三種方法的集中**

#

include

#include

using

namespace std;

intmain()

;//清空容器記憶體的第一種方式

vectort<

int>()

.swap()

;//清空容器記憶體的第二種方式

vector<

int>temp;

temp.

swap

(num)

;//清空容器記憶體的第三種方式

num.

clear()

; vector<

int>

(num)

.clear;

//利用size()函式和capacity()函式來檢測容器的元素個數和記憶體大小

cout

}

以上是作者本人在學習過程中做的乙個小總結,如有不完善之處或者紕漏之處,歡迎批評指正!!!

記憶體分配的三種方式

把所有的點都說到,才能說明你有足夠的專案經驗,在實際工作的時候不會因為一些小問題而產生一些嚴重的bug,也證明了你有實力勝任這份工作。要回答這個問題,我們必須先要理解c 的記憶體管理方式,需要站在記憶體四區的角度去審視一下 這樣整個理解了記憶體分配的方式,回答的時候就只需要注意一些細節了。寫乙個例子...

記憶體分配的三種方式

1.記憶體分配方式 記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內...

IOC容器三種注入方式

介面注入 instance.properties 該檔案應放在classes資料夾下 檔案的內容如下 student com.sias.student public class studentfactory get set方法注入 property寫法如下 或 或 附 idref和ref區別 idr...