社区
C++ 语言
帖子详情
关于string::c_str()的问题
ybxuwei
2013-04-12 04:05:37
有函数:
string fun()
{
.........
}
现在这样使用
printf("%s", fun().c_str());
不知道有没有问题?fun返回的string对象为临时变量,它在函数调用结束便被析构了,所以通过函数c_str返回的const char*指针指向的内存也是无效的,但是为什么这样使用在程序中却没有问题?
...全文
221
2
打赏
收藏
关于string::c_str()的问题
有函数: string fun() { ......... } 现在这样使用 printf("%s", fun().c_str()); 不知道有没有问题?fun返回的string对象为临时变量,它在函数调用结束便被析构了,所以通过函数c_str返回的const char*指针指向的内存也是无效的,但是为什么这样使用在程序中却没有问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
steven30832
2013-04-12
打赏
举报
回复
你这里返回的变量又不是引用,虽然函数体内的临时变量被析构了,但是他的值作为返回值已经复制给了函数体外的临时变量... fun().c_str()相当于 string temp = fun(); temp.c_str(); 然后析构掉temp; 如果你返回的是引用,就会有问题。
zhcosin
2013-04-12
打赏
举报
回复
这个临时对象不是在函数调用结束被析构的,被析构的是函数内部待返回的局部变量,这个临时对象在return语句处被构造(使用复制构造函数从函数内部待返回的局部变量复制),在printf语句执行完毕时被析构。
有关
str
ing
和
str
ing
.c_
str
()的
问题
本文探讨了在使用
str
ing
.c_
str
()过程中可能遇到的
问题
,特别是关于char*与
str
ing
结束符不一致导致的潜在错误,并提出了使用
str
ing
(src,length)初始化方式来避免此类
问题
。
std::
str
ing
::c_
str
()方法使用不当的
问题
本文深入分析std::
str
ing
::c_
str
()方法使用不当导致的悬垂指针
问题
,涵盖内存重分配、对象生命周期结束和移动操作等引发指针失效的原因,并提供安全使用的四种模式及多线程环境下的最佳实践,帮助开发者避免常见陷阱。
我晕,一个低级错误导致我DEBUG两天(std::
str
ing
c_
str
()的
问题
)
本文讲述了作者在使用第三方库处理RO素材时遇到的堆损坏
问题
。通过加入特定代码进行调试,最终定位到了
问题
根源在于不当使用std::
str
ing
的c_
str
()方法。
关于std::
str
ing
::
str
ing
str
eam.
str
().c_
str
()的
问题
本文揭示了在C++中使用std::
str
ing
str
eam进行字符串转换时的一个常见陷阱,即直接使用
str
().c_
str
()获取字符串可能导致的内存访问错误,尤其是在多线程环境下。通过实例分析,介绍了正确的做法,并强调了在项目开发中对内存管理和线程安全性的重视。
注意
str
ing
与c_
str
()使用带来的
问题
本文详细解析了C++中的c_
str
()函数,它用于将
str
ing
类型转换为C风格的字符串。文章解释了其返回值是一个指向只读字符数组的指针,并提供了正确的使用实例,包括如何通过
str
cpy()函数复制字符串。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章