我正在尝试在函数new_array
中创建大小为max_value
的数组something
。 max_value
的值只能在运行时知道。我该如何修复此代码?
void something (int input_array[], int array_length) {
int max_value = *std::max_element(input_array, input_array + 8);
int new_array[max_value] = {0};
}
我收到实时问题消息:“可能无法初始化可变大小的对象”
答案 0 :(得分:3)
C ++没有可变长度数组(阅读here为什么)虽然some compilers may support them(以及你自己)。
如果您可以使用堆而不是堆栈,则可以像这样使用std :: vector:
std::vector<int> new_array(max_value, 0);
但要删除错误,您只需删除初始化程序并手动初始化数组:
int new_array[max_value];
memset( new_array, 0, max_value*sizeof(int) );