5

私はこのクラス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)

何か案は?前もって感謝します!

4

3 に答える 3

7

std::stringグローバル スコープのオブジェクトがあります: AppController::TAG

アプリケーションが通常とは異なる方法で終了すると、グローバル オブジェクトに対してこの種の valgrind エラーが発生します。おそらく何も心配する必要はありません。

プログラムを変更する (変更できない/変更したくない) 場合は、次のドキュメントをお読みください: http://valgrind.org/docs/manual/manual-core.html#manual-core.suppressで、このエラーを取り除くことができます。

于 2012-10-21T20:29:32.970 に答える
1

場合によっては、valgrind によって誤検知が発生することがあります。これは、valgrind がメモリを失うと言ったとしても、実際にはそうではないことを意味します。

この質問で説明されているように、唯一心配する必要があるのは、exit()関数を呼び出すときです。

これらの警告をこれ以上表示したくない場合は、無視するエラーに関する情報を valgrind に提供する抑制ファイルを作成できます。

于 2012-10-21T20:28:46.510 に答える