RT, 출력할 문자열에 char*를 사용하여 직접 값을 할당하고 문자열 길이를 RETURN_STRINGL에 직접 하드코딩하면 실행 중에 결과가 출력되지만 "세그먼트 오류, 코어가 덤프되었습니다"가 보고됩니다. 하지만 공식적으로 권장되는 spprintf 함수를 사용하여 값을 할당하고 길이를 얻으면 오류가 보고되지 않습니다. 이유는 무엇입니까?
PS: 그림의 코드에서 RETURN_STRINGL의 두 번째 매개변수를 2로 변경하면 동일한 오류가 보고됩니다. PHP가 끝에 0을 포함할 것이라고 생각했기 때문에 3으로 변경했지만 시도한 후에는 몇 번이나 여기서는 문제가 되지 않는다는 것을 깨달았습니다
RETURN_STRINGL에서 반환되는 문자열은 PHP 메모리 관리에 의해 할당된 메모리여야 하며 종료 후 PHP 자체에서 해제됩니다. 이 경우 세 번째 매개변수를 1로 설정할 수 있습니다. 이는 PHP 자체가 문자열을 복사하기 위해 해당 메모리를 할당한다는 의미입니다.