为什么在下面的代码中使用动态内存分配时我的代码会出现段错误?任何关于可能发生什么的指针? ,我正在使用 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;
}
答案 0 :(得分:1)
语法? b[y][x] = 0
而不是 b[i][j] = 0
?
b[y][x]
超出范围。
而 b[y-1][x-1]
是最后一个矩阵索引。