首页 文章

在php扩展中调用方法的分段错误

提问于
浏览
0

我试图将一些数据传递给存储在zval中的对象,在这个代码的php扩展中,我收到分段错误错误

[核心:通知] [pid 8645] AH00052:子pid 8649退出信号分段故障(11)

有没有人可以帮助我理解为什么我得到这个错误以及调用对象方法的正确方法是什么?

谢谢!

//create zval with the data
    zval *zbuffer;
    MAKE_STD_ZVAL(zbuffer);
    ZVAL_STRINGL(zbuffer, WS_G(buffer), WS_G(bufferLen), 1);

    ///push data in object
    zval *retval_ptr;
    zend_call_method( *WS_G(zobj), ce, NULL, "push",  strlen("push"),  &retval_ptr, 1, zbuffer, NULL TSRMLS_CC );

1 回答

  • 0

    似乎问题出在我如何创建zbuffer ZVAL的正确代码是:

    zval *zbuffer;
        MAKE_STD_ZVAL(zbuffer);
        Z_TYPE_P(zbuffer) = IS_STRING;
        Z_STRVAL_P(zbuffer) = WS_G(buffer);
        Z_STRLEN_P(zbuffer) = WS_G(bufferLen);
    

    谢谢!

相关问题