使用memset函数时出现了BUG.
void setZeroes(vector<vector<int> >& matrix) {
int size1 = matrix.size();
int size2 = matrix[0].size();
int* hang = new int[size1];
int* lie = new int[size2];
memset(hang, 0, sizeof(hang)); //这里的因为初始化不是vector容器,而是int数组
memset(lie, 0, sizeof(lie));
....
}
经过对比发现,我们初始化vector容器时使用memset函数sizeof(vector对象)可以得到正确的结果,但是对于这种具体化的数组对象,我们需要sizeof(数据结构对应的字节)*个数
故改为:
memset(hang, 0, sizeof(int)*size1); //这里的因为初始化不是vector容器,而是int数组
memset(lie, 0, sizeof(int)*size2);

博客讨论了在C++中使用memset函数初始化int数组时遇到的BUG,指出对于非vector容器,需要使用sizeof(数据类型)*元素个数来正确设置内存。文章提供了一个修正后的代码示例,强调了在处理内存初始化时的注意事项。

被折叠的 条评论
为什么被折叠?



