Zend API: array_init
生活随笔
收集整理的這篇文章主要介紹了
Zend API: array_init
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
array_init 和array_init_size?這2個看起來像是個函數(shù)其實這2個都是宏,具體定義在文件:zend_API.h 中。
#define array_init(arg) _array_init((arg), 0 ZEND_FILE_LINE_CC) #define array_init_size(arg, size) _array_init((arg), (size) ZEND_FILE_LINE_CC)_array_init函數(shù)定義在zend_API.c文件中。
/* Argument parsing API -- andrei */ ZEND_API int _array_init(zval *arg, uint size ZEND_FILE_LINE_DC) /* {{{ */ {ALLOC_HASHTABLE_REL(Z_ARRVAL_P(arg));_zend_hash_init(Z_ARRVAL_P(arg), size, NULL, ZVAL_PTR_DTOR, 0 ZEND_FILE_LINE_RELAY_CC);Z_TYPE_P(arg) = IS_ARRAY;return SUCCESS; }
通過對_array_init函數(shù)的分析,可以看到傳遞給_array_init的arg參數(shù)必須是已經(jīng)初始化了的zval,否則會報段錯誤。所以array_init和array_init_size的正確用法是:
zval *arr1, *arr2; MAKE_STD_VAL(arr1); MAKE_STD_VAL(arr2);array_init(arr1); array_init(arr2, 31);轉(zhuǎn)載于:https://my.oschina.net/jackin/blog/173458
總結(jié)
以上是生活随笔為你收集整理的Zend API: array_init的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android之SharedPrefer
- 下一篇: corosync/openais+pac