小编TTb*_*boy的帖子

C++ valgrind可能在STL字符串上泄漏

我没有看到下面泄漏的原因.

#include <iostream>
#include <cstdlib>

int fail(const std::string str)
{
    std::cerr<< str << std::endl;
    exit(1);
}

const std::string usage()
{
    std::string a = "a";
    return a;
}   

int main()
{
    fail(usage());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Valgrind说:

==7238== 14 bytes in 1 blocks are possibly lost in loss record 1 of 1
==7238==    at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
==7238==    by 0x40E7C03: std::string::_Rep::_S_create(unsigned, unsigned, 
std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.10)
==7238==    by 0x40E8864: (within /usr/lib/libstdc++.so.6.0.10)
==7238==    by 0x40E89D5: std::string::string(char const*, std::allocator<char> const&) 
(in /usr/lib/libstdc++.so.6.0.10)
==7238== …
Run Code Online (Sandbox Code Playgroud)

c++ string valgrind stl

2
推荐指数
2
解决办法
7880
查看次数

标签 统计

c++ ×1

stl ×1

string ×1

valgrind ×1