内存分配简画
动态内存分配
1、数组在栈上开辟空间,数组的下标必须是常量,也就是确定值。数组的大小在编译过程中就已经确定了,使用内存时只有在运行中才能确定需要多少。
2、
(1)空间在不同需求下,可能需要不断调整空间大小,导致代码的可扩展性下降;
(2)有可能因为空间划分不合理可能导致空间浪费;
(3)一般在栈上,能有一次有效分配的空间是有限的;
所以我们需要“动态内存管理”:
(1)让我们能够在程序运行期间来决定开辟空间的大小;
(2)有效使用空间,满足不同需求;
(3)堆空间大于栈空间。
3、
*动态内存管理 — 堆空间
void malloc (size_t , size):在堆上申请空间(空间连续)
栈空间:自动申请自动释放;不需要用户进行内存管理
堆空间:需要程序员自己申请(malloc)