【发布时间】:2015-06-05 14:55:42
【问题描述】:
int **dpTable = new int* [iMatrixHeight + 1];
for (int i = 0; i < iMatrixHeight + 1; i++)
{
dpTable[i] = new int [iMatrixWidth + 1];
}
memset(dpTable, 0, (sizeof(int)) * (iMatrixHeight + 1)*(iMatrixWidth + 1));
我使用 operator new 来分配一个二维数组,但是如果我使用 memset 来初始化数组,我稍后访问该数组时会出现段错误。没有 memset 也没关系。
我做错了吗? 谢了!
【问题讨论】:
-
您试图用整数数组填充指针数组,并且超出 (iMatrixWidth + 1) 倍(+/- 指针大小和 int 之间的差异) .
-
您正在使用
memset来消除您的 for 循环努力获取的整个指针序列。 (并且为了在伤口上加盐而破坏了过程中的顺序)。 -
我要问的另一个问题是 +1 的预期目的是什么。为什么不相应地设置 iMetrixHeight?