C:何时使用堆栈分配的数组以及何时使用堆分配的数组

时间:2012-08-17 11:00:13

标签: c

我被告知不要使用堆栈分配的数组,因为堆栈是一种宝贵的资源。 其他人向我建议,实际上只要数组相对较小就可以使用堆栈分配的数组。

我想有一个一般的经验法则:我什么时候应该使用堆栈分配的数组? 什么时候应该使用堆分配数组?

1 个答案:

答案 0 :(得分:1)

全局和静态变量的范围将贯穿整个过程的生命周期。这些变量的内存将在进程启动时分配,并且只有进程退出时才会被释放。

但局部变量(堆栈变量)仅具有定义它的函数的作用域。调用函数时将分配内存,一旦控件退出函数,它将被释放。

动态内存的主要目的是创建用户定义范围的变量。如果要控制变量的范围,可以在一个函数中为变量x分配内存,然后将引用(地址)传递给所需的函数,最后可以释放它。

因此,在动态分配内存的帮助下,我们可以创建一个范围高于局部变量且小于全局或静态变量的变量。

除此之外,如果体系结构包含内存约束,如果大小非常高,则最好采用动态memroy。