gpt4 book ai didi

php - 在 PHP 中堆栈和堆?

转载 作者:可可西里 更新时间:2023-10-31 23:20:17 24 4
gpt4 key购买 nike

我正在学习操作系统,我不太了解的是堆和堆栈。我知道好处和每一个是如何工作的,但在动态语言的情况下,我无法弄清楚堆栈是如何分配的。

在静态类型语言中,所有原始数据类型都存储在堆栈中,因为它们很小,并且将或多或少地按照分配它们的相同顺序被释放,但是在像 PHP 这样的语言中,直到运行时才知道这一点。那么堆栈大小和变量分配如何可能呢?

如果我理解正确的话,堆栈大小是在编译时通过分析原始数据类型的数量和一些偏移量来确定的。这个过程是如何用 PHP 或其他动态语言完成的?

如果这个问题是在黑暗中踢的,请给我一些指导如何了解这个

最佳答案

  1. 如果我没理解错的话,所有的PHP数据类型都是zval . zval 是基于一些“Z”数据类型(在 C 中定义)。 “真实”数据类型的数量有限。我相信它们存储在堆栈中。

    因此,虽然用户可以创建新的数据类型,但它们不是“真正的”数据类型,而是不同的 zval 值。并且“真实”数据类型的数量和定义是稳定的。因此堆栈的大小和内容在运行时不会改变。

  2. 内存大小有限。 PHP得积极做reference counting和垃圾收集。更多详情请阅读this slide about PHP memory management .

关于php - 在 PHP 中堆栈和堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24223249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com