찾다

 >  Q&A  >  본문

PHP 확장의 RETURN_STRINGL에 spprintf 함수가 필요합니까?

RT, 출력할 문자열에 char*를 사용하여 직접 값을 할당하고 문자열 길이를 RETURN_STRINGL에 직접 하드코딩하면 실행 중에 결과가 출력되지만 "세그먼트 오류, 코어가 덤프되었습니다"가 보고됩니다. 하지만 공식적으로 권장되는 spprintf 함수를 사용하여 값을 할당하고 길이를 얻으면 오류가 보고되지 않습니다. 이유는 무엇입니까?

PS: 그림의 코드에서 RETURN_STRINGL의 두 번째 매개변수를 2로 변경하면 동일한 오류가 보고됩니다. PHP가 끝에 0을 포함할 것이라고 생각했기 때문에 3으로 변경했지만 시도한 후에는 몇 번이나 여기서는 문제가 되지 않는다는 것을 깨달았습니다

PHPzPHPz2755일 전894

모든 응답(1)나는 대답할 것이다

  • 習慣沉默

    習慣沉默2017-06-05 11:09:02

    RETURN_STRINGL에서 반환되는 문자열은 PHP 메모리 관리에 의해 할당된 메모리여야 하며 종료 후 PHP 자체에서 해제됩니다. 이 경우 세 번째 매개변수를 1로 설정할 수 있습니다. 이는 PHP 자체가 문자열을 복사하기 위해 해당 메모리를 할당한다는 의미입니다.

    회신하다
    0
  • 취소회신하다