理解 c_str() 对返回字符串的函数直接调用的无效性
处理返回字符串的函数时,直接调用 c_str()返回的函数可能会导致意外结果。在这个特定的实例中,c_str() 尝试将返回的字符串转换为 const char,但生成的 const char 相反存储垃圾值。
根本问题在于临时性质SomeFunction() 返回的字符串。 c_str() 产生一个指向该临时字符串的指针,一旦函数执行结束,该指针就无效。这会导致垃圾值存储在 const char* 中。
要纠正此问题,了解引用和指针之间的区别至关重要。虽然引用会延长其引用对象的生命周期,但像 c_str() 这样的临时对象指针却不会。因此,charArray 会出现悬空指针问题。
相反,当您声明一个新的字符串变量 (str_copy) 并将其分配给 SomeFunction() 的返回值时,您将创建临时字符串的副本。该副本仍然有效,并且在 str_copy 上调用 c_str() 返回一个指向字符串内容的有效 const char*。
以上是为什么直接在函数的字符串上调用 c_str() 会返回垃圾?的详细内容。更多信息请关注PHP中文网其他相关文章!