SomeFunction() 함수가 문자열을 반환하면 반환된 문자열은 이를 성공적으로 const 문자 포인터로 변환합니다. 그러나 특정 시나리오에서는 예기치 않은 동작이 발생할 수 있습니다.
제공된 코드에서 알 수 있듯이 SomeFunction()에서 c_str()을 직접 호출하면 가비지 데이터를 참조하는 const 문자 포인터(charArray)가 생성되고 반환된 값을 할당합니다. 문자열을 다른 문자열(str)로 변환한 다음 c_str()을 호출하면 의도한 동작이 제공됩니다.
이 이유는 무엇입니까? 발생:
SomeFunction().c_str()은 함수 범위 내에서만 존재하는 임시 변수(SomeFunction() 내부의 str 변수)에 대한 포인터를 제공합니다. 함수가 반환된 후 해당 변수는 소멸되고 포인터(charArray)는 매달린 포인터가 됩니다.
반대로 str_copy = SomeFunction()을 사용하면 반환된 문자열의 복사본이 만들어집니다. 이 새 문자열은 함수 외부에 존재하며, 이에 대해 c_str()을 호출하면 반환되는 포인터가 유효한 데이터를 가리키므로 올바른 변환이 보장됩니다.
위 내용은 str_copy = SomeFunction(); 동안 SomeFunction().c_str()이 가비지 데이터를 반환하는 이유는 무엇입니까? str_copy.c_str(); 올바르게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!