c++ 关于局部变量的问题 25

c++中有如下个方法以及使用:constchar*A(constchar*a){std::stringstr=a;returnstr.c_str();}B(constch... c++中有如下个方法以及使用:
const char *A(const char * a){
std::string str = a;
return str.c_str();
}
B(const char * b){
.....
//b 做一些处理
.....
}
B(A("test"));

这样有什么错误,或者隐患,怎么改?
展开
 我来答
百度网友2018359
2017-03-27 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1435万
展开全部
有隐患, 在A中str是一个局部变量, 当A结束时, str会被释放, 这时再返回str, 是不安全的, 实际上是返回了一个已经释放了的内存区域
解决: 1.全局变量, 2. 定义一个buf去接收返回值
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式