なぜこのデバッグエラーが発生するのか、一生理解できません。
ヒープの破損が検出されました:0x004cF6c0の通常のブロック(#126)の後、CRTは、ヒープバガーの終了後にアプリケーションがメモリに書き込んだことを検出しました。
新しい演算子を使用するときはいつでもメモリを解放する必要があることを理解していますが、それでも問題が発生します。
何らかの理由で、プログラムが再帰関数で正しく終了しません。私はそれをデバッグし、ブレークポイントを使用してコードの各行を調べました。
countSumのifステートメントの最後で、どういうわけかiから1を引いてから、ifブロックに再び入ります。
なぜこれが発生するのですか?
/*this program calculates the sum of all the numbers in the array*/
#include <iostream>
#include <time.h>
using namespace std;
/*prototype*/
void countSum(int, int, int, int*);
int main(){
bool flag;
int num;
int sum = 0, j=0;
int *array = new int;
do{
system("cls");
cout<<"Enter a number into an array: ";
cin>>array[j];
cout<<"add another?(y/n):";
char choice;
cin>>choice;
choice == 'y' ? flag = true : flag = false;
j++;
}while(flag);
int size = j;
countSum(sum, 0, size, array);
//free memory
delete array;
array = 0;
return 0;
}
void countSum(int sum, int i, int size, int *array){
if (i < size){
system("cls");
cout<<"The sum is :"<<endl;
sum += array[i];
cout<<"...."<<sum;
time_t start_time, stop_time;
time(&start_time);
do
{
time(&stop_time); //pause for 5 seconds
}
while((stop_time - start_time) < 5);
countSum(sum, (i+1) , size, array); //call recursive function
}
}