0

我想将二维数组设置为 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);,但是这不起作用并且给了我段错误。我怎么做?

4

1 回答 1

7

您的数组不是连续的,因为它实际上不是多维数组。它是一个数组数组,有时也称为锯齿状数组。

因此,您的行可以并且将会是不相交的。因此,您需要在每一行上调用 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 的内容。

于 2013-08-23T20:07:32.803 回答