大小一的数组声明

时间:2017-02-10 08:49:32

标签: php c zend-framework

遍历' zval' Zend源代码中的结构,我看到了这个: // zend_types.h

struct _zend_string {
   zend_refcounted_h gc;
   zend_ulong        h;                /* hash value */
   size_t            len;
   char              val[1];
};

这个结构用于存储字符串,但是' char val [1]'看起来很尴尬它是如何使用的?

1 个答案:

答案 0 :(得分:2)

这样的东西用于在编译时访问未知长度的数组。结构从malloc获取其内存,其大小大于结构。因此,该阵列可用于访问多余的内存。 len对于保持在极限状态非常重要。

奇怪的是,它是一个1元素数组,0元素数组是常见的,直到在c99中引入了可变长度数组(val[])。