2015-02-24 22 views
-3

在C++中,如何在堆棧中與堆中創建動態2維數組?我目前正在嘗試完成和分配,概述了兩者的優點和缺點。有關該主題的任何來源或鏈接也都歡迎!謝謝。C++數組:Stack與堆

+2

你到目前爲止嘗試過什麼?你是否做過關於這個主題的搜索或者查找教程? – eigenchris 2015-02-24 02:04:57

+0

在堆棧上創建動態數組的主要缺點是,在標準C++中,你根本無法做到這一點。這使問題變得毫無意義。 – 2015-02-24 02:21:28

+0

此外,爲什麼這是如此嚴重downvvoted? – 2015-02-24 04:30:24

回答

3

是的,你可以。當在自由功能塊中自動存儲的位置聲明和定義時,具有2維的最基本聚合將爲您提供堆棧上的數組。但是這僅限於堆棧空間,通常在24kB到1MB之間。所以你不能做大數組。你也不能移動它們或刪除你想要的東西,因爲它們的生活與程序流程有關。

堆從程序流中分離出來,並且由malloc函數決定東西的位置。通常根據大小要求有一大堆「bin」,並且從一定的大小(通常大於256kB)開始,它會直接向操作系統請求使用VirtualAllocmemmap的塊。在32位中,您可以分配高達2GiB的數據,並且在交換空間變滿時您可以分配64位數據。在哪些點你的進程將被OOM或其他進程殺死。

我認爲這些是主要區別