lzysyy 2022-10-27 16:18 采纳率: 80%
浏览 19
已结题

关于创建指针数组来实现对一个二维数组,结果出现段错误

关于创建指针数组来实现对一个二维数组的描述,编译之后出现段错误,并提示了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;
    }

之后为了对该二维数组其中的一维实现两次哈希操作,结果数据集跑了一部分之后发生了段错误,调试的话没有指出具体哪块发生问题,只是显示哈希部分错误,如图所示

img

img

想知道是哪块代码出问题了,感觉还是二维数组以及指针数组的问题

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-10-27 16:33
    关注

    if(hash) delete [] hash;
    这是不对的。hash不是动态分配的数组,但hash的元素是动态分配的指针。你得和counters一样,用循环来释放

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 用lstm来预测股票价格
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上