当数组被声明时,必须在编译时知道它的长度。动态内存分配允许程序为一个长度在运行时才知道的数组分配内存空间。
malloc:memory(内存),allocate(分配)缩写。
静态分配:分配了4个字节
int i = 5;
动态分配:
int* p = (int*)malloc(4);
只有一个形参,并且形参时整形。
malloc函数只能返回第一个字节地址。
分配了8个字节,p变量占4个字节,p指向的内存也占四个字节。p本身所占的内存是静态分配,p指向的内存是动态分配。
free(p);
把p指向的内存释放。
p 本身的内存只能在p变量所在的函数运行终止时又系统自动释放。