【发布时间】:2013-03-12 18:08:38
【问题描述】:
这是我的 C++ 代码
int** a;
try{
a = new int*[m];
for(int i = 0; i<m;i++)
a[i] = new int[n];
}
... 现在我正在使用 for 循环初始化上述内容,如下所示:
for(int i = 0; i<m; i++)
for(int j = 0; i<n; j++)
a[i][j] = 0;
我正在努力提高性能,因此认为使用 memset 是个好主意。所以修改了我的代码以使用 memset 而不是 for 循环,如下所示:
memset(a, 0, sizeof(a[0][0]) * m * n);
但是我在执行这个时遇到了分段错误。谁能帮我弄清楚我做错了什么?
【问题讨论】:
-
您是否在代码中的任何位置为“a”分配内存?
-
对不起,我错过了添加内存分配。
a = new int*[m]; for(int i =0; i<m ;i++) a[i] = new int[n]; -
好的,现在问题很清楚了 - 添加了一个答案。
标签: c++ linux arrays pointers multidimensional-array