私のコードに問題があります。問題は、私のプログラムがすべて実行されても、最後にはクラッシュするということです。私のIDEは私に不満を与えないし、なぜ私のプログラムが最後に失敗しているのかについての指標がないので、何かが外れているとか、何かが私のスタックを台無しにしていると信じられています。私は自分のコードを見てきましたが、何も外れているようには見えないので、私はこの問題について完全に混乱しています。データ管理エラーC++
私が作成したヘッダーファイル、ヘッダーファイルの関数を含むファイル、およびメインメソッドファイルを使用しています。このエラーは、自分の関数を含むファイルの結果です。
が高い値int - -
windowSizeをint型 -
低い値int - 私のクラスの
フィールドは 大きさint型
* filteredArray - int型
配列[] - int
彼女eはヘッダファイルです:
#include "Filter.hpp"
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath>
#include <array>
#include <string>
#include <cstring>
using namespace std;
// Constructor
Filter::Filter(int num){
size = ((rand() % 25) + 25);
high = ((rand() % 6) + 5);
low = ((rand() % 6) + 5) * -1;
windowSize = num;
randArrayGen();
hanningFilter();
}
void Filter::randArrayGen(){
for(int i = 0; i < size;i++){
array[i] = (rand() % (high + low * -1)) + low;
}
}
int Filter::hanning(int ar[]){
int weightAvg;
if(windowSize == 3){
weightAvg = (ar[0] + ar[1] * 2 +ar[2])/4;
}
else if(windowSize == 5){
weightAvg = (ar[0] + ar[1] * 2 + ar[2] * 3 + ar[3] * 2 + ar[4])/9;
}
else if(windowSize == 7){
weightAvg = (ar[0] + ar[1] * 2 + ar[2] * 3 + ar[3] * 4 + ar[4] *3 + ar[5] * 2 + ar[6])/16;
}
else if(windowSize == 9){
weightAvg = (ar[0] + ar[1] * 2 +ar[2] * 3 + ar[3] * 4 + ar[4] * 5 + ar[5] * 4 + ar[6] * 3 + ar[7] * 2 + ar[8])/25;
}
else{
weightAvg = 0;
}
return weightAvg;
}
void Filter::hanningFilter(){
filteredArray = new int[size];
for(int i = 0; i < size; i++){
if(i - (windowSize/2) < 0 or i + (windowSize/2) > size - 1){
filteredArray[i] = 0;
}
else{
filteredArray[i] = hanning(&array[i-(windowSize/2)]);
}
}
}
int Filter::getHigh(){
return high;
}
int Filter::getLow(){
return low;
}
int Filter::getSize(){
return size;
}
どのように 'array'を割り当てますか?具体的には 'new int [.. what size ..? ''行です。 –
コードが何をすべきかの要約を書いた方がいいでしょう。 – Lamar
コードをチェックしたところ、実際には割り当てられていないことがわかりました...しかし、まだ動作しています。 –