gpt4 book ai didi

c++ - 动态大小数组在哪里创建? (堆栈或堆)

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:40 25 4
gpt4 key购买 nike

例如,我有一个基于用户输入的动态大小的数组:

int n;
cin >> n;
int items[n];

这个数组是在栈上分配的吗?还是像我写的那样放在堆上:

int n, *items;
cin >> n;
items = new int[n];
...
delete [] items;

编辑:我理解第二个代码的作用。我在问第一个代码是否与第二个代码做同样的事情,但行数更少。

最佳答案

您的第一个示例根本没有使用动态数组 - 它使用的是堆栈分配的可变长度数组(通常在幕后相当于 alloca 调用,除了sizeof 运算符),这是 C99 的特性,而不是 C++。

当然,您的第二个数组是通过 new 在堆上分配的。

关于c++ - 动态大小数组在哪里创建? (堆栈或堆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com