我想将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的这部作品,并给了我段错误.我怎么做?
您的数组不是连续的,因为它实际上不是一个多维数组.它是一个数组数组,有时也称为锯齿状数组.
因此,您的行可以并且将会不相交.因此,您需要在每一行调用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的内容.