gpt4 book ai didi

c++ - 这是C++中最好的分配方式

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:53 25 4
gpt4 key购买 nike

第一种情况:

void func(int size)
{
int arr[size];

for(int i=0;i<size;i++)
arr[i]=1;

for(int i=0;i<size;i++)
cout<<arr[i];

}

int main()
{
func(6);

return 0;
}

or,

第二种情况

void func(int size)
{
int *ptr = new int[size];

for(int i=0;i<size;i++)
ptr[i]=1;

delete[] ptr;
}

查询:

两者有什么区别(这里是第一种情况动态分配)?

哪个最好用(因为元素是 6,第一个是最好的选择)?

第一种情况叫动态栈分配吗?

最佳答案

第一个不是 C++——当前标准 (C++11) 不允许使用可变长度数组——它可能是 C++14,但尚未发布。如果您的编译器可以很好地编译它,那么它只是一个编译器扩展:如果您使用的是 GCC,请使用 -pedantic-errors 编译它。 ,你会看到错误。

第二个是一个糟糕的解决方案:任何资源都应该包装在资源管理类中,通常称为 RAII 类。让它们像那样打开是一个危险的想法。在此站点上搜索 RAII,您会看到很多主题。

有一个更好的解决方案:使用 std::vector<int> .

关于c++ - 这是C++中最好的分配方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19762414/

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