代码如下
vector<CString>* mmm = new vector<CString>;
我通过 mmm->push_back(CString对象);到最后不用这个容器的时候(这个时候容器里面已经加入了几万或者10几万条CString了)
if( mmm!=NULL)
delete mmm;
会出错???!!!!
vector<CString>* mmm = new vector<CString>;
我通过 mmm->push_back(CString对象);到最后不用这个容器的时候(这个时候容器里面已经加入了几万或者10几万条CString了)
if( mmm!=NULL)
delete mmm;
会出错???!!!!
{
mmm->clear();
delete mmm;
mmm=NULL;
}为何不用CStringArray
呵呵,CString不就是MFC类么?
{
mmm->clear();
delete mmm;
mmm=NULL;
}
//#include "stdafx.h"
#include <afx.h>
#include <vector>
#include <iostream>
using namespace std;int main(int argc, char* argv[])
{
int i =0 ;
vector<CString*>* mmm = new vector<CString*>;
vector<CString*>::iterator it;
CString *s = 0;
for(i=0;i<100;i++)
{
s = new CString();
s->Format("%s:%d","String:", i);
mmm->push_back(s);
}
for(it = mmm->begin();it<mmm->end();it++)
{
cout<<(*it)->GetBuffer(0)<<endl;
}
for(it = mmm->begin();it<mmm->end();it++)
{
delete (*it);
}
mmm->clear();
delete mmm;
return 0;
}
我在使用这个new出来的对象的时候 是通过 *对象指针 当做一个对象被引用过去的
比如
vector<CString>* mmm
viod abc( vector<CString>& youmm)
{
youmm.push_back(CString);
}
用完的时候 出的问题是不能析放内存;
无论我是怎么样mmm->clear();
delete mmm;
mmm=NULL;
还是
delete mmm;
delete mmm;
mmm=NULL;
mmm->clear();
delete mmm;
mmm=NULL;
还是释放不了内存
否则debug时,肯定说你内存有泄漏。
using namespace std;vector<CString> AboveDataArrAboveDataArr.push_back("gfjdh");
在用完后直接AboveDataArr.Clear();这样有什么不好吗?