Vol*_*orm 4 c++ memory valgrind
我正在使用Valgrind来检测我的库中的内存泄漏/错误,这是我第一次使用它.似乎暗示有一些无效的读取std::string
.
这是错误消息的开头
==16214== Invalid read of size 1
==16214== at 0x402701D: strlen (mc_replace_strmem.c:282)
==16214== by 0x40E53AA: std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14)
==16214== by 0x42FD03E: LHAPDF::Fortran_PDF_Base::initAlphasPDF() (Fortran_PDF_Base.C:290)
Run Code Online (Sandbox Code Playgroud)
其余的只是更多的回溯.作为我的代码的行是结构的构造函数,它接受两个std::string
s作为参数.
我不相信std::string
可以做错什么,那么可能的问题是什么呢?
编辑 - 结构构造函数:
AlphaS_Info() {}
AlphaS_Info(bool fixed, Order order, std::string method, std::string symbol,
double alfasQ, int alfasQParm, double Q0, double mc, double mb, double mt) :
m_fixed(fixed), m_order(order), m_method(method), m_symbol(symbol),
m_mc(mc), m_mb(mb), m_mt(mt), m_alfasQ(alfasQ), m_Q0(Q0), m_alfasQParm(alfasQParm) {}
Run Code Online (Sandbox Code Playgroud)
调用构造函数:
p_info->p_asinfo = new LHAPDFTOOLS::AlphaS_Info(fixed, evoOrder, method, symbol, alfasQ, alfasQParm, Q0, cmass, bmass, tmass);
Run Code Online (Sandbox Code Playgroud)
您可能将无效字符串传递给构造函数,例如通过使用指针/引用已删除的字符串.
归档时间: |
|
查看次数: |
2887 次 |
最近记录: |