19

次のようなコードがあります。

class Data
{
    public:
        Data(const std::vector<int> &_data)
        {
            my_data = _data;
        }

    private:
        std::vector<int> my_data;
};


int main()
{
    std::vector<std::shared_ptr<Data>> vec = {
        std::shared_ptr<Data>(new Data(std::vector<int>({ 1, 2 ,3 }))),
        std::shared_ptr<Data>(new Data(std::vector<int>({ 3, 4 ,5 })))
    };

    // breakpoint

    return 0;
}

どういうわけか、(ブレークポイントで) 値をチェックするためにプログラムを一時停止すると、最初の ( vec[0]) 要素が破棄され、2 番目の要素 ( vec[1]) は問題ありません。ここで何が起こっているのですか?それはコンパイラのバグですか?新しい Visual Studio 2013 を使用しています。

4

4 に答える 4