我有这个类AppController
和功能connectPlayer
:的std :: string内存泄露
/* AppController.h */
class AppController
{
// Some other declarations ...
private:
static const string TAG;
};
/* AppController.cpp */
#include "AppController.h"
const string AppController::TAG = "AppController";
AppController::AppController() {
/* some code here...*/
}
void AppController::connectPlayer() {
std::string port;
std::string host;
port = CM->getMenu()->getData("PORT");
host = CM->getMenu()->getData("HOST");
this->setState("Connecting...");
Logger::info(TAG, "Port: " + port);
Logger::info(TAG, "Host: " + host);
}
当我执行程序时,我得到这个从Valgrind的:
==7848== 25 bytes in 1 blocks are definitely lost in loss record 160 of 671
==7848== at 0x402842F: operator new(unsigned int) (vg_replace_malloc.c:255)
==7848== by 0x4210A83: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7848== by 0x4212CF7: char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7848== by 0x4212E65: 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.16)
==7848== by 0x8080501: AppController::connectPlayer() (in /home/maine/Escritorio/taller7542/UltimaVersion/src/main)
任何想法?先谢谢你!
什么是AppController :: TAG? – PiotrNycz
@PiotrNycz,它只是班级的名字。我用它在记录器中写入执行程序期间发生的重要事件。 –
拥有静态持续时间的_non-POD_对象(就像你的'AppController :: TAG'是'std :: string')可能不是好事。您可能想尝试像使用简单的'const char []'一样使用POD。另请参阅[本节来自Google的C++风格指南](http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Static_and_Global_Variables)。 –