【发布时间】:2015-09-03 22:07:37
【问题描述】:
我的功能如下:
float* Alocate2DBlankMemoryContinousSpace(int w, int h)
{
float *matrix = (float*)malloc(w*h*sizeof(float));
for (int i = 0; i<w*h; i++)
matrix[i] = 0.0;
return matrix;
}
用于二维分配向量。对于像 w=1000 和 h=1000 这样的小向量,它可以正常工作,但是对于更大的向量,内存访问冲突写入位置存在问题,事实上我有很多空闲内存要写入。如何在连续内存中分配和初始化大空间?
【问题讨论】:
-
你不需要将你自己的内存归零,使用
calloc而不是malloc,它会为你归零,大概比你的程序本身更快。 -
你能给出一个失败的 w,h 吗?平台/32/64 位等信息也很有价值。
-
“但是对于更大的向量存在问题” 是的,这并不奇怪。在您告诉我们“更大”是什么之前,以“不清楚您要问什么”结束投票。
-
好的,谢谢回复。我使用乘数增加矩阵的体积,我将内存不足,因为我尝试如下:int w=1000*multiplier 和 int h=1000*multiplier。
-
是的,
multiplier的什么值会导致问题?
标签: c memory memory-management malloc