关于创建指针数组来实现对一个二维数组的描述,编译之后出现段错误,并提示了Process returned -1073741819 (0xC0000005)
template<int guide_candidate_mem>
class Guide_Candidate_Part
{
private:
uint8_t counter_size,shift;
uint32_t mask,counter_max,buf,adj_val;
int h, w = guide_candidate_mem* 1024/4; //w是计数器大小8bit的行计数器数量,实为*1024*8/4/8
uint32_t *counters[4];
int idx[d],val[d];
uint32_t min_value = 1 << 30;
BOBHash32 * hash[d]; //两个哈希
public:
Guide_Candidate_Part() {}
Guide_Candidate_Part(uint32_t in_w,uint32_t in_h, uint8_t in_counter_size,uint32_t random_seed) //属性
{
init(in_w, in_h, in_counter_size, random_seed);
}
~Guide_Candidate_Part() { clear(); } //析构函数
void init(uint32_t in_w, uint32_t in_h, uint8_t in_counter_size,uint32_t random_seed){
w= in_w,h = in_h, counter_size = in_counter_size;
counters[0]=new uint32_t[4*w]; //将指针数组指向了行一维数组的首地址,并分配4W个大小的内存空间
counters[1]=new uint32_t[4*w];
counters[2]=new uint32_t[2*w];
counters[3]=new uint32_t[w];//这已经声明了数组的计数器类型是uint32_t
mask = counter_max = (1u << counter_size) - 1;
srand((unsigned)time(NULL));
std::random_device rd; //产生不同的随机数种子
for(int i =0; i< d; i++)
hash[i] = new BOBHash32(rd());
}
void clear()
{
for(int j=0; j< 4; j++)
delete[]counters[j];
if(hash) delete [] hash;
}
之后为了对该二维数组其中的一维实现两次哈希操作,结果数据集跑了一部分之后发生了段错误,调试的话没有指出具体哪块发生问题,只是显示哈希部分错误,如图所示
想知道是哪块代码出问题了,感觉还是二维数组以及指针数组的问题