malloc()与固定大小的简单声明之间的区别

时间:2015-05-13 11:45:19

标签: c double malloc difference

假设我想为 x double的数组获取空间, x 是一个整数。

有人可以解释一下

之间的区别
double myArray[x];

malloc(x*sizeof(double));

除了malloc()返回void指针的事实?

提前感谢您的回答。

1 个答案:

答案 0 :(得分:1)

double myArray[x];这里的记忆是

  1. 在堆栈上声明
  2. 在编译时声明,因此更快
  3. 仅在声明函数的范围内可访问(全局范围内声明全局)
  4. 如果声明函数返回
  5. 将被释放
  6. 通常在编译时知道数组大小时使用
  7. myArray = malloc(x*sizeof(double));这里的记忆是

    1. 在堆上声明(除了在Malina指向的堆栈上分配的可变长度数组(C99),阅读更多here
    2. 在运行时声明,因此更慢
    3. 只要可以访问myArray变量,就可以访问
    4. 调用free(myArray)或程序退出
    5. 时将被释放
    6. 通常在编译时未知数组大小的情况下使用