C ++数组:堆栈与堆

时间:2015-02-24 02:01:36

标签: c++ arrays dynamic stack heap

在C ++中,如何在堆栈中创建动态二维数组?我目前正在努力完成和分配,概述了两者的优缺点。欢迎任何关于该主题的来源或链接!谢谢。

1 个答案:

答案 0 :(得分:3)

是的,你可以。在与自由功能块中的自动存储相同的位置声明和定义时,具有2个维度的最基本聚合将在堆栈上提供一个数组。但是这仅限于堆栈空间,通常介于24kB和1MB之间。所以你不能做大数组。此外,您无法移动或删除它们,因为它们的生命与程序流程相关。

Heap与程序流分离,由malloc函数决定是否有东西。通常它有一堆" bins"根据大小请求,从一定大小(通常超过256kB),它将使用VirtualAllocmemmap直接向操作系统询问块。在32位中,您可以分配最多2GiB,在64位中,您可以在交换空间变满时分配。 OOM或其他过程将在何时将您的进程杀死。

我认为这些是主要的差异