如何记忆2D arrray?

Tam*_*ari 0 c++

我想将2D数组memset为0.这是我的代码..但它总是给我seg错误;

      bool **visited=new bool*[m];
         for(int i=0;i<m;++i)
           visited[i] = new bool[m];
Run Code Online (Sandbox Code Playgroud)

我曾尝试memset(visited, 0, sizeof(visited[0][0]) * m * m);memset(visited, 0, sizeof visited);,但nonw的这部作品,并给了我段错误.我怎么做?

Dav*_*nan 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);
}
Run Code Online (Sandbox Code Playgroud)

虽然,我不能不指出您应该使用C++功能,而不是使用new运算符编写看似C的内容.