std :: string内存泄漏(std::string memory leak)

编程入门 行业动态 更新时间:2024-10-26 10:35:38
std :: string内存泄漏(std::string memory leak)

我有这个类AppController和函数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得到这个:

==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)

有任何想法吗? 先谢谢你!

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); }

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 。

当应用程序以非常正常的方式完成时,您会遇到全局对象的这种valgrind错误。 可能没什么可担心的。

如果您(不能/不想)更改您的程序 - 请阅读此文档: http : //valgrind.org/docs/manual/manual-core.html#manual-core.suppress以消除此错误。

You have std::string objects in global scope: AppController::TAG.

When application finished in not very normal way you've got these kind of valgrind errors for global objects. Probably nothing to worry.

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.

更多推荐

本文发布于:2023-08-07 14:10:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1464701.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内存   string   std   memory   leak

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!