内存的静态分配和动态分配有啥不同?
内存的静态分配和动态分配区别:
1.时间不同:
静态分配发生在程序的编译和链接的时候。
动态分配发生在程序调入和执行的时候。
2.空间不同:
静态分配只能是有栈来分配(有编译器来完成,比如定义一个局部变量 int b = 1)
动态分配可以是堆分配(malloc分配,需要手动回收内存)或者栈分配(编译器来完成,自动回收内存)
3.灵活度不同:
静态分配需要提前指定空间大小,不能再动态改变大小。
动态分配不需要提前分配存储空间,可以动态的调整大小。
4.生命周期不同:
静态分配的内存在程序一开始运行就会分配内存,直到程序结束了,内存才会被释放。
动态分配的内存是在程序调用函数时才被分配,函数结束了,动态内存就应该被释放掉(别忘了手动释放)。