C++11 vector使用初始化列表会造成内存泄漏
std::vector<std::vector<std::string>> itemText =  //初始化列表会造成内存泄漏
{
    { "1" },
    { "2" },
    { "3" },
    { "4" },
    { "5" },
    { "6" },
    { "7" },
    { "8" },
    { "9" },
    { "0" }
};
上面的代码会造成内存泄漏,Win7+VS2013

换了下面的代码就没问题了
std::vector<std::string> vRow1 = { "1" };
    std::vector<std::string> vRow2 = { "2" };
    std::vector<std::string> vRow3 = { "3" };
    std::vector<std::string> vRow4 = { "4" };
    std::vector<std::string> vRow5 = { "5" };
    std::vector<std::string> vRow6 = { "6" };
    std::vector<std::string> vRow7 = { "7" };
    std::vector<std::string> vRow8 = { "8" };
    std::vector<std::string> vRow9 = { "9" };
    std::vector<std::string> vRow10 = { "0" };

    TreeItemsText itemText = { vRow1, vRow2, vRow3, vRow4, vRow5, vRow6, vRow7, vRow8, vRow9, vRow10 };
    这是为什么?

3个回答

你是怎么判断有内存泄漏的?用的工具么?一些工具判断不准确,它们会把在堆上没有发生回收的数据都当成“泄漏”。

dongguxidu1
崖高人远 根据_CrtSetBreakAlloc(387);定位的到这个地方,然后注释掉,VS输出框就没有内存泄漏提示了。
3 年多之前 回复
dongguxidu1
崖高人远 " Detected memory leaks! Dumping objects -> {403} normal block at 0x007DE2C8, 8 bytes long. Data: < A > CC EA 41 00 00 00 00 00 "
3 年多之前 回复
dongguxidu1
崖高人远 我的mfc代码工程里只有这部分代码执行了。然后退出的时候,VS的输出框提示有memory leaks
3 年多之前 回复

怎么会内存泄露呢! 感觉这不太可信

这应该是编译器bug 你用vs2015试试

dongguxidu1
崖高人远 还没安装2015,不过谢谢你~
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!