栈是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;

 

堆是函数库提供的功能,特点是灵活方便,数据适应面广泛,但是效率有一定降低。

 

栈是系统数据结构,对于进程线程是唯一的; 

堆是函数库内部数据结构,不一定唯一。

不同堆分配的内存无法互相操作。

栈空间分静态分配和动态分配两种。

静态分配是编译器完成的,比如自动变量(auto)的分配。

动态分配由alloca函数完成。

栈的动态分配无需释放(是自动的),也就没有释放函数。

为可移植的程序起见,栈的动态分配操作是不被鼓励的!

堆空间的分配总是动态的,虽然程序结束时所有的数据空间都会被释放回系统,

但是精确的申请内存释放内存匹配是良好程序的基本要素。

_________________________________________________________________________________________________________________

 

相关文章:

  • 2022-12-23
  • 2022-01-19
  • 2021-12-29
  • 2021-10-24
猜你喜欢
  • 2021-06-09
  • 2022-12-23
  • 2022-03-08
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2021-07-31
相关资源
相似解决方案