动态内存分配段错误

时间:2021-05-24 09:57:24

标签: c++ heap-memory

为什么在下面的代码中使用动态内存分配时我的代码会出现段错误?任何关于可能发生什么的指针? ,我正在使用 valgrind,它指出第二个循环是问题所在。

#include <iostream>
using namespace std;

int main() 
{

    int x , y;

    scanf("%d",&x);
    scanf("%d",&y);

    int** b= new int*[y];
    for(int i = 0 ; i < y; i++)
    {
        b[i] = new int[x];
    }

    //Problem at this loop area according to valgrind
    for(int i = 0 ; i < y ; i++)
    {
        for(int j = 0 ; j < x ; j++)
        {
            b[y][x] = 0;
        }
    }

    cout<<b[0][0]<<endl;

    for(int i = 0 ; i < y; i++)
        {
            delete b[i];
        }

    delete [] b;

    return 0;
}

1 个答案:

答案 0 :(得分:1)

语法? b[y][x] = 0 而不是 b[i][j] = 0 ?

b[y][x] 超出范围。

b[y-1][x-1] 是最后一个矩阵索引。

相关问题