2

因此,在过去的几个月里,我已经生成了一些代码,也许更多,我使用 C++ 字符串库来连接字符串。像这样:

template< typename T >
string tostr( const T & val ); // implmented wherever

void somelibraryfunction( const char * );

// begin actual code

somelibraryfunction( ( "foo" + tostr( 5 ) ).c_str( ) );

这可以编译并正常工作。我担心的是创建的临时字符串在获取地址后被销毁c_str,我只是依靠读取最近释放但未清除的内存。有什么想法吗?

4

1 回答 1

6

在整个语句完成之前,临时字符串不会被销毁,直到库函数返回之后。只要该函数不将该地址的副本保存在某处以供以后使用,您的代码就可以了。(存储字符串内容的副本很好;它只是不应该存储char*指针值,当临时字符串消失时,指针值变得无效。)

于 2013-02-14T06:42:05.023 回答