【发布时间】:2010-02-06 14:09:32
【问题描述】:
我们最近收到一份报告,称我们的应用程序有时会无法运行。我追踪到了问题代码:
struct ARRAY2D
{
long[] col;
}
int numRows = 800000;
int numCols = 300;
array = (ARRAY2D*) malloc(numRows * numCols * sizeof(long))
如果用户没有足够大的空闲块,则此 800 Mb 分配可能会失败。更改内存分配方式的最佳方法是什么?
请记住,我有大量代码可以像这样访问这个对象:array[row].col[colNum],所以我需要一些需要次要或主要查找和替换的东西数组访问代码的编辑。
【问题讨论】:
-
您使用的是 C 还是 C++?你的标签没有帮助。
-
@Poita:他可能在使用 C++,但只使用了 C 特性。 耸耸肩
-
您的应用是否总是需要分配此内存,还是取决于应用中的特定场景?
-
我总是要分配这么多内存。
-
C++ 是否允许您声明像
long[] a这样的数组而不是long a[]?我在标记为 C 或 C++ 的问题中多次看到这种类型的语法。还是人们只是不复制和粘贴他们的代码?