这两个内存分配之间的区别是什么?

时间:2017-11-04 17:24:09

标签: c memory memory-management buffer

char str[10]char *str = (char *) malloc(10)之间的区别是什么?据我所知,他们俩都没有为char的数组分配10个字节?

2 个答案:

答案 0 :(得分:1)

  1. char str[10];

  2. 全局(静态)范围 - 在.data.bss段中分配(取决于初始化。在程序终止之前无法释放。

    本地(自动)范围 - 通常(大多数实现,但C标准不会违反堆栈上分配的"堆栈")。程序离开范围时自动释放。

    2

    char *str = malloc(10);

    在堆上分配。需要使用free函数

    从程序中释放

答案 1 :(得分:-1)

char str[10]在堆栈上分配内存。 char *str = (char *) malloc(10)在堆上分配内存。堆栈和堆存储在计算机的RAM中。 More information about stack and heap