被push_back进vector的结构体指针合适可以被delete???
简单的代码如下。。。
typedef struct data
{
int a;
int b;
}MYDATA;
vector<MYDATA*> v_data;
int x,y;
for(i=0;i<100;i++)
{
MYDATA* pdata=new MYDATA;
pdata->a=i;
pdata->b=i+10;
v_data.push_back(pdata);
//delete pdata; <----------------------问题就出在这里
}
for(i=0;i<v_data.size();i++)
{
x=v_data[i]->a;
y=v_data[i]->b;
}
问题就出在delete那里,如果保留delete pdata,那么下面的x,y将无法被赋值。
如果注释掉delete,那么会不会造成内存泄漏?实际应用中,可能要push_back上万次。。。)
目前的想法是当v_data.size()达到某一设定值时,pop_back全部元素,并delete掉,请问这种思路是否可行?是否还留有隐患?