0

我正在深入了解 PHP 的基础知识,突然想到“变量以哪种内存格式存储在内存中?”

那是堆栈还是堆?

请为我提供参考资料来研究内存中的这种变量分配..

4

1 回答 1

3

PHPzval/pval用作基本数据容器。

struct _zval_struct {
    zvalue_value value;     // The value
    zend_uint refcount__gc; // The number of references to this value (for GC)
    zend_uchar type;        // The type
    zend_uchar is_ref__gc;  // Whether this value is a reference (&)
};

typedef union _zvalue_value {
    long lval;                // For integers and booleans
    double dval;              // For floats (doubles)
    struct {                  // For strings
        char *val;            //     consisting of the string itself
        int len;              //     and its length
    } str;
    HashTable *ht;            // For arrays (hash tables)
    zend_object_value obj;    // For objects
} zvalue_value;

它们在 zend.h 中定义:http: //lxr.php.net/xref/PHP_5_4/Zend/zend.h#318

于 2012-11-01T07:27:29.790 回答