【问题标题】:How to memset a 2D arrray?如何memset一个二维数组?
【发布时间】:2013-08-23 19:50:10
【问题描述】:

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

【问题讨论】:

标签: c++


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2021-06-04
  • 2022-01-15
  • 2010-12-21
相关资源
最近更新 更多