valgrind调试问题

koko2710 2008-06-13 10:26:05
==22648== 60 bytes in 3 blocks are possibly lost in loss record 1 of 2
==22648== at 0x4005B65: operator new(unsigned) (vg_replace_malloc.c:163)
==22648== by 0x77D1A1A: std::string::_Rep::_S_create(unsigned, unsigned, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.8)
==22648== by 0x77D3747: std::string::_M_mutate(unsigned, unsigned, unsigned) (in /usr/lib/libstdc++.so.6.0.8)
==22648== by 0x77D38E9: std::string::_M_replace_safe(unsigned, unsigned, char const*, unsigned) (in /usr/lib/libstdc++.so.6.0.8)
==22648== by 0x77D3984: std::string::assign(char const*, unsigned) (in /usr/lib/libstdc++.so.6.0.8)
==22648== by 0x77D3B04: std::string::operator=(char const*) (in /usr/lib/libstdc++.so.6.0.8)
==22648== by 0x804909E: main (teststate.cpp:160)

指向的是
po.tstate ="998877666";

这样为什么会泄漏内存?
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
koko2710 2008-06-13
  • 打赏
  • 举报
回复
啊?这不是已经确定是泄漏了么?

==22648== possibly lost: 60 bytes in 3 blocks.
==22648== still reachable: 43,956 bytes in 999 blocks.
evifree 2008-06-13
  • 打赏
  • 举报
回复
只是possibly, 也就是valgrind不能确定是否是泄漏, 需要你自己判断
K行天下 2008-06-13
  • 打赏
  • 举报
回复
==3908== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1
类似这样才是内存泄露
evifree 2008-06-13
  • 打赏
  • 举报
回复
definitely的才是确定已经泄漏的

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧