如何在运行时分配多维数组?

Sun*_*een 2 c arrays pointers ansi

在设计时我可以声明一个这样的变量:

char szDesignTimeArray[120][128];
Run Code Online (Sandbox Code Playgroud)

上面的声明是120个大小为128的数组.在运行时我需要分配以下内容:

char szRunTime[?][128];
Run Code Online (Sandbox Code Playgroud)

我知道数组的大小,但我不知道需要分配多少个数组.当我知道这个数字时,我如何声明并分配它们?

一切都好了

San*_*ngh 6

我假设在运行时你也知道Row_Size.

您可以在运行时动态分配多维数组,如下所示:

#include <stdlib.h>

int **array;
array = malloc(nrows * sizeof(int *));
if(array == NULL)
    {
    fprintf(stderr, "out of memory\n");
    exit or return
    }
for(i = 0; i < nrows; i++)
    {
    array[i] = malloc(ncolumns * sizeof(int));
    if(array[i] == NULL)
        {
        fprintf(stderr, "out of memory\n");
        exit or return
        }
    }
Run Code Online (Sandbox Code Playgroud)

参考:

http://www.eskimo.com/~scs/cclass/int/sx9b.html

  • 请记住,释放子数组也很重要,而且不仅要执行`free(array);`. (3认同)