std::stringstream ss; 直接使用ss.str().c_str() 字符串指针可能导致崩溃

来源:清泛原创     2020-09-05 13:23:32    人气:     我有话说( 0 人参与)

清泛网(www.tsingfun.com):std::stringstream ss;const char* ch = ss str() c_str();call_func(ch);这种写法在系统内存不足时,ss会立马释放内存,字符串指针ch可能会非法访问导致崩溃。代码最好的是

std::stringstream ss;
const char* ch = ss.str().c_str();
call_func(ch);
这种写法在系统内存不足时,ss会立马释放内存,字符串指针ch可能会非法访问导致崩溃。
代码最好的是分开写:
std::stringstream ss;
// 独立出std::string
std::string str = ss.str();
const char* ch = str.c_str();
call_func(ch);

Linux下使用 valgrind 工具可以查出上面可能的非法内存访问的问题。

注:本文为本站或本站会员原创优质内容,版权属于原作者及清泛网所有,
欢迎转载,转载时须注明版权并添加来源链接,谢谢合作! (编辑:admin)