内存的静态分配和动态分配有啥不同?

内存的静态分配和动态分配区别:

1.时间不同:

 静态分配发生在程序的编译和链接的时候。

   动态分配发生在程序调入和执行的时候。

2.空间不同:

 静态分配只能是有栈来分配(有编译器来完成,比如定义一个局部变量 int b = 1)

   动态分配可以是堆分配(malloc分配,需要手动回收内存)或者栈分配(编译器来完成,自动回收内存)

3.灵活度不同:

 静态分配需要提前指定空间大小,不能再动态改变大小。

    动态分配不需要提前分配存储空间,可以动态的调整大小。

4.生命周期不同:

  静态分配的内存在程序一开始运行就会分配内存,直到程序结束了,内存才会被释放。

     动态分配的内存是在程序调用函数时才被分配,函数结束了,动态内存就应该被释放掉(别忘了手动释放)。

posted @ 2022-03-04 16:45  QZ-CMD  阅读(1655)  评论(0编辑  收藏  举报