0

Zend/zend_execute_API.c PHP-5.2.17 の 358 行目

「zend_is_executing(TSRMLS_C)」を実行するのはなぜですか?

4

1 に答える 1

0

get_active_function_nameソースをチェックアウトすると、エグゼキュータ global にアクセスしようとしていることがわかりますfunction_state_ptr

問題は、PHP コードが実際に実行される場合にのみ、このエグゼキュータ グローバルが初期化されることです。たとえば、関数が呼び出されるget_active_function_name前に拡張機能が呼び出そうとすると、-checkを省略すると、PHP インタープリターがクラッシュする可能性があります。executeget_active_function_namezend_is_executing

したがって、このチェックはget_active_function_name、大きな問題を引き起こす可能性のある初期化されていない値にアクセスすることを防ぎます (これは、「未定義の動作」の別の言い方です)。

于 2012-11-26T06:39:22.547 に答える