2

pthreadsを使用していくつかのマルチスレッド コードに取り組んでいます。( valgrindを介して)いくつかのメモリリークを発見したとき、単純にいくつか追加しました

cout << " new [some name of class for me]" << endl;

コンストラクターの一部で、すべて削除したと思ったからです。これにより、それらの一部がmain() の前に起動されることが明らかになりました。main() からすべてを削除したので、次のようになります。

int main(){
    return 0;
}

#includeがなくても、これらのコンストラクターは呼び出されます。この場合、前のコードから何も呼び出す必要はないと思います。Eclipse で「プロジェクト クリーン」オプションを使用し、バイナリを削除しようとしました ( Debug/Release )。何も役に立ちません..

その目的は何ですか?他に何ができますか?前もって感謝します。

4

1 に答える 1

5

globalstatic変数はの前に初期化されますmainstatic関数内で宣言された変数を除きます。それらは最初の呼び出しで初期化されます。したがって、静的変数とグローバル変数を確認する必要があると思います

于 2012-07-16T11:33:48.540 に答える