16,548
社区成员




class SNew
{
public:
SNew()
{
m_nValue = 1;
}
virtual ~SNew()
{
}
int m_nValue;
};
int _tmain(int argc, _TCHAR* argv[])
{
SNew *pValue = new SNew();
vector<SNew*> vpData;
vpData.push_back(pValue);
vector<SNew*> vpData2;
for (int i=0; i<vpData.size(); i++)
{
vpData2.push_back(vpData.at(i));
}
for ( vector<SNew *>::iterator it=vpData.begin(); it !=vpData.end();)
{
SNew *pTmp = *it;
delete pTmp;
pTmp = NULL;
it=vpData.erase(it);
}
SNew *pTmp2 = vpData2.at(0); //该指针为0xfeeefeee野指针,如何设计让其为NULL?
return 0;
}
PS:for循环中不允许进行vpData2的处理的情况下,如何使得vpData2的元素自动也变成NULL?for ( vector<SNew *>::iterator it=vpData.begin(); it !=vpData.end();)
{
SNew *pTmp = *it;
delete pTmp;
pTmp = NULL; //这句话,并不是 把vpData容器里面的指针设为NULL,而是把pTmp指向NULL,当你delete pTmp 时候vpData容器内部的指针就是0xfeeefeee
it=vpData.erase(it);
}