为什么会抛出访问冲突异常?

时间:2018-03-30 06:03:53

标签: c++ oop

我的代码行抛出异常: (抛出未处理的异常:写入访问冲突。 this-> v是0x443E112)

v[i] = v[i - k]; 

在下面的函数中:

void NagyEgesz::eltolJobbra(int k) {
        this->n = this->n + k;

        for (int i = n-1; i >= k ; i++) {
            v[i] = v[i - k];
        }
        for (int j = 0; j < k; j++) {
            v[j] = 0;
        }

以下是该类的声明:

class NagyEgesz{

    int *v;
    int n;
    int elojel;

public:

    NagyEgesz();
    NagyEgesz(int elojel, int n, const int* szamjegyek);
    NagyEgesz(const NagyEgesz &x);
    ~NagyEgesz() {
        delete v;
    }
    void kiir();
    void eltolJobbra(int k);
    NagyEgesz osszead(const NagyEgesz &x);

};

1 个答案:

答案 0 :(得分:1)

这看起来像一个相反的循环:

for (int i = n-1; i >= k ; i++) {

因此,您应该将i++替换为i--

提示将来发现类似的问题:write access violation通常意味着数组索引中的拼写错误