如何在二维整数数组上使用 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 的回答是这样建议的)。
如何定义第一个维度已用 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 的回答是这样建议的)。