變量名是存放在??臻g的,棧區是先進后出,那么主動 unset 一個變量的時候,它是怎么被彈出的?
1 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
php中變量是分配在執行棧的尾部,執行棧zend_execute_data,實際是一塊堆內存,是個變長結構體,由zval來存儲變量的值,變量名是存儲在symbol_table中,在unset時,并沒有進行出棧操作,而是將變量名稱從全局符號表(函數中則為函數執行棧的符號表)中刪除,并且將存儲其值的zval置為IS_UNDEF,函數中的臨時變量的內存會在函數執行結束時進行釋放,全局變量則在整個程序執行結束后進行釋放
- 1 回答
- 0 關注
- 541 瀏覽
添加回答
舉報
0/150
提交
取消