2013-11-23 31 views
5

最近我已将项目升级到Visual Studio 2013.因此initializer_list功能现在可用。我需要在单元测试中初始化测试数据。但我使用嵌套的initialize_lists获取内存泄漏。为什么嵌套的initializer_list导致内存泄漏

#include <memory> 
#include <boost/test/unit_test.hpp> 

struct Test_Fixture 
{ 
    Test_Fixture() 
    :test_data({ 
     std::make_shared<std::vector<int>>(std::vector<int>{ 0, 1 }), 
     std::make_shared<std::vector<int>>(std::vector<int>{ 2, 3, 4 }) 
    }) {} 

    std::vector<std::shared_ptr<std::vector<int>>> test_data; 
}; 

BOOST_FIXTURE_TEST_CASE(testcase_1, Test_Fixture) 
{ 
    BOOST_CHECK(true); 
} 

输出:

1> Detected memory leaks! 
1> Dumping objects -> 
1> {1593} normal block at 0x0051A6E8, 8 bytes long. 
1> Data: <` C  > 60 F6 43 00 00 00 00 00 
1> Object dump complete. 
+0

也许与[此错误]相关(https://connect.microsoft.com/VisualStudio/feedback/details/807610/first-element-of-vector-is-destroyed-initializing-from-initializer-list) ? – dyp

+0

@DyP这两个错误都阻止我使用此功能。 :(谢谢。 – user3024877

+0

可以确认问题。 – tmanthey

回答