2012-08-15 55 views
0

也許,這是一個非常基本的問題,但無論如何,我有一個大小爲10的數組。但是,在爲數組分配整數時,我只給出了8個元素。我可以釋放2個未使用的元素的內存嗎?陣列中的免費元素

+0

你必須使用數組嗎?爲什麼不是其他數據結構,如向量? – berkay 2012-08-15 21:02:51

+0

是的。我想知道,如果這可以使用數組 – user502808 2012-08-15 21:03:28

+0

完成取決於你指的是什麼數組。因爲這個原因,內建的語言數組並沒有太多用處。所以我們有更常用的替代對象(比如std :: vector)。 – 2012-08-15 22:24:56

回答

1

不,你不能。對於動態分配,只能分配mallocnewfreedelete存儲器。完全相同的數量與完全相同的指針。對於自動變量,內存將自動釋放。

但由於這是C++,使用std::vector代替。請。

1

這取決於你如何得到你的陣列。

如果是在自動或靜態分配存儲空間(即本地或全球)沒有什麼,你可以免費的,因爲你沒有任何分配(編譯器做了你)的數組。

如果這是一個動態分配的數組,你可以通過創建只有八個元素更小的陣列,複製原始值到它,然後釋放原始數組達到同樣的效果。這並不能保證分配給你的程序的內存量必然會下降,因爲八元素數組的分配器被允許爲更多元素分配空間。另一方面,如果數字是10000和8000,幾乎肯定會節省一些費用(儘管該標準也不能保證)。