应用中堆栈分配初识(自己理解,不一定准确)

        一个应用程序共享一个堆,却有很多栈,也可以说是一个线程共享一个栈。堆空间是程序员分配的,栈空间是系统分配的。那么在程序启动的开始是如何确定堆和栈的呢?我想可能是这样的:应用程序启动的时候,进入第一个类中的时候,堆空间已经开辟,栈的个数是根据目前有多少线程决定的。程序顺序执行,该放在堆空间的就放在堆空间,该放在各自栈空间的放在各自的栈空间。函数,全局变量,局部变量,静态值等都根据自己生命周期进行释放。堆和栈都在根据程序的运行动态改变着。直到程序结束,堆和栈都被释放。

      说一个不太恰当的比喻,整个过程就像是分配快递,堆呢就是一块很大的空间,整个空间中存放的都是未署名(相当于大小不定)的快递。栈呢就是各个省份的快递堆。程序运行的堆栈分配就相当于分拣员分配快递,是谁的放在谁的那一堆。有的快递被运走了,那一块空间就被释放了。

上一篇:MySQL 配置ssl主从同步


下一篇:中国人工智能学会通讯——AI如何深度应用于消费金融的风控决策 1.2 在人工智能的业务实践中,长尾数据和特征能很大提升信用评分的准确性。