C中的动态2D阵列分配

Jus*_*ers 2 c c++ multidimensional-array

我应该如何在C中分配动态数组?目前我有一个我写的函数malloc2D,看起来像这样:

void* malloc2D(size_t unitSize, uint firstCount, uint secondCount)
{
    void** pointer = malloc(sizeof(id) * firstCount);
    for (int i =0; i < firstCount; i ++){
        pointer[i] = malloc(unitSize * secondCount);
    }
    return pointer;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但有人告诉我,它会分别对内存分配造成很大压力.最好或最常规的方法是什么?

Sni*_*gus 5

您可以一次分配整个块:

int ** foo;

foo = malloc(sizeof(int*) * firstCount);
foo[0] = malloc(sizeof(int) * firstCount * secondCount);
for (int i=1; i<firstCount; i++)
{
    foo[i] = foo[0] + i * secondCount;
}
Run Code Online (Sandbox Code Playgroud)