malloc无法分配内存

Bla*_*art -2 c malloc defragmentation

我正在写一个C代码来解决欧拉方程.我的代码在集群上工作得很好,但在我的电脑上却没有.似乎是malloc()的一个问题.它无法分配请求的内存并失败.

我如何使它工作?它是否与碎片整理有关?但系统设置显示(0%碎片整理).

在这里只包含一部分malloc()代码.

double **u, **rho_u, **rho,    
int Size = 1000;
u = (double**)malloc(Size*sizeof(double*));
for(i=0;i<=Size;i++)
    u[i] = (double*)malloc(Size*sizeof(double));

rho_u = (double**)malloc(Size*sizeof(double*));
for(i=0;i<=Size;i++)
    rho_u[i] = (double*)malloc(Size*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

Ctx*_*Ctx 5

你可能在这里腐败了你的堆:

for(i=0;i<=Size;i++)
    u[i] = (double*)malloc(Size*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

您分配了1001个指针,但只分配了1000个指针.正确版本:

for(i=0;i<Size;i++)
    u[i] = (double*)malloc(Size*sizeof(double));
Run Code Online (Sandbox Code Playgroud)

第二个循环相同.

  • @BlackHeart是的,未定义的行为是丑陋的,它似乎在某一时刻起作用,然后在另一起失败. (2认同)