如何memset 2D数组?

时间:2013-08-23 19:50:10

标签: c++

我想将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);,但是这样做并且给了我段错误。我该怎么做?

1 个答案:

答案 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的东西。