C++处理临时对象和数组的正确方法是什么

Sha*_* Xu 2 c++

最近我读了很多关于排序算法的文章,我发现了让我感到困惑的奇怪之处.在函数中,它需要在for循环中创建一个临时数组.示例代码是

for(;;)//ignore the condition
{
    int *b = new int[N];
    //some code
    delete b[];
}
Run Code Online (Sandbox Code Playgroud)

问题是:为什么不在没有new运算符的情况下直接创建它,因为编译器会自动销毁它并在每次迭代后释放内存.就像在循环中写这个

int b[N];
Run Code Online (Sandbox Code Playgroud)

在前面,我总是使用这个方法来创建临时类型/对象.我完全错了或类似数组的内容与内置类型不同?

那么,Stack Overflowers,有人能给我一些建议吗?

Chr*_*ckl 5

为什么不在没有new运算符的情况下直接创建它,因为编译器会自动销毁它并在每次迭代后释放内存.

的确,为什么不呢?

如果N在编译时已知,那么继续使用int b[N].

如果N在编译时不知道,那么std::vector<int>应该使用:

for(;;)//ignore the condition
{
    std::vector<int> b(N);
    //some code
}
Run Code Online (Sandbox Code Playgroud)

你应该问的代码的作者为什么他或她使用new[]delete[],但机会是它只是缺乏经验.