std::string 内存泄漏 [英] std::string memory leak
问题描述
我有这个类 AppController
和函数 connectPlayer
:
I've got this class AppController
and the function connectPlayer
:
/* 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 得到这个:
And when I execute the program, I get this from 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)
有什么想法吗?提前致谢!
Any ideas? Thank you in advance!
推荐答案
您在全局范围内拥有 std::string
对象:AppController::TAG
.
You have std::string
objects in global scope: AppController::TAG
.
当应用程序以不太正常的方式完成时,您会遇到此类全局对象的 valgrind 错误.大概没什么好担心的.
When application finished in not very normal way you've got these kind of valgrind errors for global objects. Probably nothing to worry.
如果您(不能/不想)更改您的程序 - 请阅读此文档:http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress 摆脱这个错误.
If you (cannot/don't want to) change your program - read this doc: http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress to get rid of this very error.
这篇关于std::string 内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!