为什么我会收到断言错误?

时间:2009-12-10 06:04:33

标签: visual-c++ assertions

#include <iostream>
using namespace std;

int main ()
{
 int size = 0;
 int* myArray = new int [size + 1];
 cout << "Enter the exponent of the first term: ";
 cin >> size;
 cout << endl;
 for (int i = size; i >= 0; --i)
 {
  cout << "Enter the coefficient of the term with exponent " 
   << i << ": ";
  cin >> myArray[i];
 }
 for (int i = size; i >= 0; --i)
 {
  cout << i << endl;
 }
 return 0;
}

为什么输入大于2时会出现断言错误?这是多项式程序的前身,其中数组的下标是每个项的幂,而array [下标]处的元素是系数。

3 个答案:

答案 0 :(得分:3)

您的数组被分配为int [1]。需要在之后分配,以读取大小值。

答案 1 :(得分:1)

当size = 0时,您正在初始化数组,数组大小为1 当你走出数组边界(1)时,你会得到断言错误。

答案 2 :(得分:0)

myArray总是大小为0 + 1 = 1.我从用户输入的任何内容开始,你做的第一个数组访问是myArray [i]。因此,假设用户输入5,您的数组大小为1,并且您访问myArray [5]。它会失败!

我会在输入大小后分配数组。