社区讨论

关于构造函数段错误的求助

学术版参与者 5已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo2dz4tz
此快照首次捕获于
2023/10/23 12:17
2 年前
此快照最后确认于
2023/11/03 12:23
2 年前
查看原帖
RT,我在做一道题时写了如下结构体:
CPP
struct Binary_indexed_array {
    int t[2000010],n;
	
    Binary_indexed_array(const int& a = 0) {
        n = a;
        memset(t,0,sizeof(t));
    }
	
    inline void add(const int& u,const int& k) {
        if (u < 1) return;
        for (int i = u; i <= n; i += lowbit(i)) t[i] += k;
    }
	
    inline int query(const int& u) {
        int ans = 0;
        for (int i = u; i >= 1; i -= lowbit(i)) ans += t[i];
        return ans;
    }
}st,nd;
然后在主函数调用其构造函数:
CPP
int main() {
    n = input();
    c = input();
    q = input();
    st = Binary_indexed_array(c);
    nd = Binary_indexed_array(c);
    
    ... //省略其它代码,因为确定是上面5行错了
    
    return 0;
}
然后就段错误。而且段错误的发生在n = input()执行之前,因为我根本没来得及输入。而注释掉两行调用构造函数之后运行就不会出错。
虽然我也知道并不一定要用这种方式实现,但是我还是想问一下这样写哪里错了 QWQ。

回复

9 条回复,欢迎继续交流。

正在加载回复...