c ++动态数组初始化崩溃

时间:2013-10-20 15:59:46

标签: c++ arrays crash dynamic-arrays

我有以下代码,我调用一个函数并创建一个动态的int数组,然后用算法填充该数组

的main.cpp

...
int main(void){

    srand((long) 1234567);

    callFunction1();

    return 0;

}

functions.h

...
    int *A;
    int N;

    //prototype
    void callFunction2();

    void callFunction1(){

         int choice;
         cin >> choice;

         while (choice != 2){

               callFunction2();

               cin >> choice;
         }

    }

    void callFunction2(){

         cout << "Enter array size" << endl;
         cin >> N;

         A = new int[N];
         A[0] = 0;
         A[1] = 1;

         for (int i=2;i<=N;i++){
             A[i] = A[i-1] + A[i-2];
         }

    }

所以上面的代码大部分时间都可以工作,但有时它会在我初始化数组的行上崩溃

A = new int [N];

造成这个问题的原因是什么?

2 个答案:

答案 0 :(得分:4)

您在此处访问A越界:

for (int i=2;i<=N;i++){
         A[i] = ....

A只能从0N-1编入索引,即在 [0,N] 范围内。

答案 1 :(得分:1)

callFunction2中也有内存泄漏。

相关问题