C++ - vector存儲動態指針時正確釋放內存

1 代碼示例


#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif

//#include "vld.h"   // visual leak detector 另一個內存泄漏檢測工具
#include <iostream>
#include <vector>
#include <string>

using namespace std;

class Example
{
public:
    Example();
    Example(int newIndex);
    virtual ~Example();
    int m_Index;
};

Example::Example()
{

}

Example::Example(int newIndex)
{
    m_Index = newIndex;
}

Example::~Example()
{
}



int main()
{
    std::vector<Example*> MyTestMap;

    for (unsigned int i = 0; i < 10; ++i)
    {
        std::string tempStr = std::to_string(i);
        Example* pExample = new Example(i);
        MyTestMap.push_back(pExample);
    }

    for (int i = 0; i < MyTestMap.size(); ++i)
    {
        delete MyTestMap[i];
        MyTestMap[i] = NULL;
    }

    MyTestMap.clear();
    MyTestMap.shrink_to_fit();

    getchar();
    _CrtDumpMemoryLeaks();

    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章