6

プロジェクトで stl コンテナーを使用していますが、説明できない奇妙なエラーを発見しました。次のコードを考えてみましょう。

#include <iostream>
#include <vector>

int main(int argc, char** argv)
{
    std::vector<bool> vec;
    vec.resize(5, false);
    std::cout << vec.at(0);
}

これは予想どおり 0 を出力しますが、drmemory でメモリ チェックを実行すると、初期化されていない読み取りが検出されます。誰でもこの動作を理解するのに役立ちますか?

プラットフォーム: win32; コンパイラ: mingw32 - gcc 4.7.2 ; Drmemory 1.6.0 - ビルド 2

4

1 に答える 1

8

std::vector<bool>目標を達成するためにビットいじりを使用して、奇妙な小さなことです。この例では、あなたが見ているのは単なるニシンであると示唆することに満足しています.

そうは言っても、このテンプレートの特殊化は普遍的に軽視されているため、他のコンテナを使用したほうがよいかもしれません

于 2013-10-14T12:00:15.163 に答える