c ++我bad_array_new_length收到此错误
c++ I get this error bad_array_new_length
所以我创建了一个程序来模拟掷骰子,然后打印结果(家庭作业:)(。 现在我得到了一个bad_array_new长度,并认为我知道它发生在哪里,但我真的不明白为什么。这可能是一个逻辑错误,如果有人能找到它或给我一个指针,那就太神奇了。
int* CalculateThrows(int dice_one, int dice_two, int throw_count)
{
// I think the error occurs here
int *digits = new int[(dice_one * dice_two) + 1]{ 0 };
digits[0] = dice_one * dice_two+1;
if (throw_count > 0)
{
for (int i = 1; i < throw_count; i++)
digits[GetRandomValue(dice_one) + GetRandomValue(dice_two)]++;
}
return digits;
}
这就是我调用方法并在稍后遍历数组的方式:
int main(int argc, char* argv[])
{
int * values = CalculateThrows((int)argv[1], (int)argv[2], (int)argv[3]);
for (int i = 1; i < values[0]; i++)
{
cout << i << ". Has been thrown: " << values[i];
}
}
argv[1]
是指向包含第一个命令行参数的字符串的指针。所以如果你把你的程序称为./program 6 5 4
,argv[1]
将是字符串"6"
,而不是数字6
。您应该使用atoi(argv[1])
来获取号码。
在使用argv[3]
之前,您还应该检查argc
是否至少是4
。
std::vector<int> CalculateThrows(int dice_one, int dice_two, int throw_count)
{
std::vector<int> digits (dice_one * dice_two, 0);
if (throw_count > 0)
{
for (int i = 0; i < throw_count; i++)
digits[GetRandomValue(dice_one) + GetRandomValue(dice_two)]++;
}
return digits;
}
int main(int argc, char* argv[])
{
if (argc < 4) return -1;
std::vector<int> values = CalculateThrows(atoi(argv[1]), atoi(argv[2]), atoi(argv[3]));
for (size_t i = 0; i < values.size(); i++)
{
cout << i << ". Has been thrown: " << values[i];
}
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 使用"Length"的头文件的 for 循环中的错误 C867
- String.length()返回错误的结果
- accum<int>(&name[0], &name[length]) 给出错误,无法将参数 1 从 'char *' 转换为 'const int *'
- 错误:未在此作用域c++中声明"length"
- C++ .length() 函数给出错误的结果
- 这是解决 GCC "sorry, unimplemented: cannot expand ‘NEXT ...’ into a fixed-length argument list"错误的好方法吗?
- if(str == NULL || str.length() == 0)获取错误
- 错误411(长度要求)的post请求与标头,但标头具有Content-Length.libCurl
- 如何修复调用 Process32First() 时"The program issued a command but the command length is incorrect."错误?