- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的代码有问题。问题是,即使我的程序一直运行到最后,它仍然崩溃了。我的 IDE 没有拒绝我,也没有指示为什么我的程序最后会失败,所以我被引导相信有什么东西超出了界限或者什么东西弄乱了我的堆栈。我查看了我的代码,似乎没有任何内容超出范围,所以我对这件事完全感到困惑。
我正在使用我创建的头文件、一个包含头文件中我的函数的文件和一个主要方法文件。该错误是包含我的函数的文件的结果。
我类的领域是大小 - 整数
低 - 整数
高强度
窗口大小 - 整数
*filteredArray - 整数
数组[] - 整数
这是头文件:
#ifndef FILTER_HPP_
#define FILTER_HPP_
#include<iostream>
class Filter {
int size;
int high;
int low;
int windowSize;
int *filteredArray;
int array[];
public:
// Constructor
Filter(int windowSize);
// Methods
void randArrayGen();
int* randArrayGenRecurHelper(int arrayRecur[], int count);
void randArrayGenRecur();
void printArrays();
int hanning(int ar[]);
void hanningFilter();
void graphicArrays();
int getSize();
int getHigh();
int getLow();
};
#endif /* FILTER_HPP_ */
代码如下:
#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;
}
最佳答案
你没有为你的数组分配内存:
int array[];
当你索引它时:
for(int i = 0; i < size;i++){
array[i] = (rand() % (high + low * -1)) + low;
}
您调用了未定义的行为,因为您越界了(例如,您请求第一个元素,但来自一个未知大小的数组)。
您可以声明具有固定大小的数组,例如:
int array[100];
但是,由于这是 C++,请考虑使用 std::vector
.一个直接的优势是您不必为静态分配的数组硬编码大小,但您可以依赖 vector 在数据插入/插入时调整大小的能力。
关于c++ - 数据管理错误 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577363/
推荐使用以下哪种 javascript 数据管理方法? jLinq jOrder 我熟悉 jLinq,但不确定是否使用 jLinq 或 jOrder。更喜欢具有更好 API 的那个。 最佳答案 jLi
我正在用 C# 做一个项目,我遇到了以下问题: 我有一些数据类型的类,例如 Person 类,它保存有关一个人的信息。 另外,我还有一个DataManager类,负责管理我程序中的人员。如果您想添加、
我不太习惯使用 Ajax,因为我刚刚开始使用它。我的问题如下: 管理使用 Ajax 获取的数据的最佳方法是什么? 我有一个脚本,可以从数据库中获取数据并根据用户过滤器和订单条件以不同的方式显示数据。到
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为 AngularJS 寻找一个简单的 CRUD 模板系统,该系统动态创建 UI 以通过 REST 管理实体。有没有已经做到这一点的东西或易于调整的模板? 理想情况下,我所要做的就是指定一个 R
我有以下收集政策演变的数据框: Df <- data.frame(Id_policy = c("A_001", "A_002", "A_003","B_001","B_002"),
我正在学习 .NET 中的 Xml 数据处理。我有以下 XML 格式。 book 1 author 1 10.90
我是一名优秀的程序员,十分优秀!