如何在二维整数数组上使用 malloc

How to use malloc on a 2D integer array

如何定义第一个维度已用 MAX_VALUES 定义的二维数组。我希望能够将内存分配给第二个维度。以下是我尝试过的。我想要一个带有 A[1000][mallocd]

的数组
#define MAX_VALUES 1000
int
main(){
    int n= 10;
    int *A[MAX_VALUES] = malloc(10 * sizeof(int));

}

试试这个

int (*A)[n] = malloc(MAX_VALUES * sizeof(*A));  

它将分配连续的二维数组。

试试这个:

int*A[MAX_VALUES],n;
for(i=0;i<MAX_VALUES;i++)
  A[i]=malloc(n*sizeof(int); 

它将有 MAX_VALUE 行的列数被锁定。

int *A[MAX_VALUES]是一个int指针数组,已经静态分配了。如果你想分配一些由 指向的 space 每个 的指针之一,你将不得不迭代数组并为每个指针分配不同的 malloc。否则你将不得不重新定义你的 A(例如@haccks 的回答是这样建议的)。