【发布时间】:2013-10-20 15:59:45
【问题描述】:
我有以下代码,我在其中调用一个函数并创建一个动态整数数组,然后用算法填充该数组
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];
这个问题的原因可能是什么?
【问题讨论】:
-
你的“数组”超出了范围。
-
您要么为 N 输入一个小于或等于 1 的数字,要么为 N 输入一个大到分配数组会消耗超过可用内存的数字(请注意可能的内存碎片,也)。
标签: c++ arrays crash dynamic-arrays