在函数中声明动态数组

时间:2014-09-14 21:05:40

标签: c++ arrays

在大小为变量的情况下,我应该在哪些情况下使用关键字 new 来分配数组?我正在阅读此代码:https://github.com/Hawstein/cracking-the-coding-interview/blob/master/1.7.cpp

在函数零()中,为什么 row [m] col [n] 声明不会导致错误? m n 是函数变量。

谢谢

2 个答案:

答案 0 :(得分:2)

VLA - 可变长度数组是C ++语言的非标准扩展,因此您的代码只能编译with a compiler extension

当你事先不知道数组的大小并且你不希望/不能浪费宝贵的堆栈内存分配一个临时的时候,你应该在每种情况下使用动态分配的内存,如果适用的话,甚至更好你,使用std::vector(一个向量使用堆内存,无论如何它的元素)

编辑:另一个重要的建议是看看smart pointers,这通常比原始指针提供额外的优势

答案 1 :(得分:0)

从不。

现代c ++编译器可以处理数组大小的变量。他们只使用mn中当前的值。无需使用new