C++数组:堆栈与堆

C++ Arrays: Stack vs Heap

本文关键字:堆栈 数组 C++      更新时间:2023-10-16

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

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

堆与程序流分离,由malloc函数决定内容的去向。通常,它根据大小请求有一堆"bin",从某个大小(通常超过256kB)开始,它会使用VirtualAllocmemmap直接向操作系统请求块。在32位中,您最多可以分配2GiB,在64位中,当交换空间变满时,您最多可分配。此时,您的进程将被OOM或其他进程杀死。

我认为这些是的主要区别