我想将2D数组设置为0.这是我的代码..但它总是给我seg错误;
bool **visited=new bool*[m];
for(int i=0;i<m;++i)
visited[i] = new bool[m];
我已经尝试了memset(visited, 0, sizeof(visited[0][0]) * m * m);
和memset(visited, 0, sizeof visited);
,但是这样做并且给了我段错误。我该怎么做?
答案 0 :(得分:6)
您的数组不是连续的,因为它实际上不是一个多维数组。它是一个数组数组,有时也称为锯齿状数组。
因此,您的行可以并且将会不相交。因此,您需要在每一行调用memset。
bool **visited=new bool*[m];
for(int i=0;i<m;++i)
{
visited[i] = new bool[m];
memset(visited[i], 0, sizeof(visited[i][0]) * m);
}
虽然,我不能指出你应该使用C ++功能,而不是使用new运算符编写看似C的东西。