对不起,我是C的新手,想知道如何在引入C99标准之前创建一个在编译时不知道大小的数组。
答案 0 :(得分:1)
使用malloc
中的stdlib.h
函数创建动态数组对象。
答案 1 :(得分:1)
通常的方法是在堆上分配数据
#include <stdlib.h>
void myfun(unsigned int n) {
mytype_t*array = (mytype_t*)malloc(sizeof(mytype_t) * n);
// ... do something with the array
free(array);
}
你也可以在堆栈上分配(所以你不需要手动释放):
#include <alloca.h>
void myfun(unsigned int n) {
mytype_t*array = (mytype_t*)alloca(sizeof(mytype_t) * n);
// ... do something with the array
}
答案 2 :(得分:1)
这很容易。例如,如果要创建可变长度1D int
数组,请执行以下操作。首先,声明一个指向int
的指针:
int *pInt;
接下来,为它分配内存。您应该知道需要多少元素(NUM_INTS
):
pInt = malloc(NUM_INTS * sizeof(*pInt));
不要忘记free
动态分配的数组以防止内存泄漏:
free(pInt);
答案 3 :(得分:0)
您可以dynamic memory allocation执行此操作。使用malloc
功能。
答案 4 :(得分:0)
malloc或calloc
YourType* ptr = malloc(sizeof(YourType)*NumberOfItemsYouNeed)