为什么要使用malloc?

Eng*_*nie 1 c memory variables malloc memory-management

根据我的理解,malloc函数接受一个变量并按要求分配内存.在这种情况下,它会要求编译器准备内存以适应20个双变量的等价.我的理解方式是否正确,为什么必须使用它?

double *q;

q=(double *)malloc(20*sizeof(double));

for (i=0;i<20; i++)
{
    *(q+i)= (double) rand();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 6

您不必在以下时间使用malloc():

  1. 在编译时已知大小,如您的示例所示.
  2. 您正在使用支持VLA(可变长度阵列)的C99或C2011.

请注意,malloc()在运行时分配内存,而不是在编译时分配内存.编译器仅涉及确保调用正确函数的程度; 这是malloc()分配.

你的例子提到了"十个整数的等价".20很少double占据与10相同的空间int.通常,10 double将占据与20相同的空间int(当sizeof(int) == 4sizeof(double) == 8,这是一个非常常见的设置).