我正在使用Valgrind檢測庫中的內存泄漏/錯誤,這是我第一次使用它。它似乎暗示std::string
中有一些無效讀取。Valgrind檢測strlen中的無效讀取
以下是錯誤消息
==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)
之初剩下的只是更多的回溯。這是我的代碼行是一個結構的構造函數,它需要兩個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) {}
調用構造器:
p_info->p_asinfo = new LHAPDFTOOLS::AlphaS_Info(fixed, evoOrder, method, symbol, alfasQ, alfasQParm, Q0, cmass, bmass, tmass);
請向我們展示代碼 –
我實際上並不知道哪些代碼是相關的。正如我所說,它「發生」的線是一個構造函數。但它是一個簡單填充結構的構造函數。我會把它放進去。 – VolatileStorm
來電者和被調用者代碼。 –