我们使用malloc而不是数组,因为我们说它会阻塞一些空间,但即使是malloc也会这样做。它分配所需的空间,然后释放它。那么它的特别之处是什么呢?我们怎么能说它是动态的呢因为它是在编程过程中存储的因为它也分配了那些固定的数字。数组
对于数组,我们说它是静态的。因为当我们创建它的时候,它已经分配了给定长度的内存。动态分配的特殊之处在于,有时,我们不知道也不想分配巨大的内存,让它因为什么都不做而浪费掉。在这种情况下,动态分配在内存方面可能比使用数组有很大的好处。
malloc
在程序运行时分配的内存。因此它是动态的。
另一种静态形式一旦初始化就不能改变,并且有一个自动的存储生命周期,也就是说,一旦超出封闭体的作用域,它就会自动被取消分配。
同样,这种初始化int arr[100]
从堆栈中分配内存,而malloc
调用从堆中分配内存,这远远超过堆栈中有限的内存(有时会慢一点)。