Скажем, у меня есть вектор, который содержит указатели, указывающие на динамическую память, а также адреса переменных, объявленных в стеке, есть ли способ безопасно перебрать и удалить только динамическую память, или я вынужден просто использовать одну или другую?или делает следующее безопасно?Я подумал, что, возможно, результат будет непредсказуемым в зависимости от компилятора.
std::vector<int*> theInts;
int* i = new int;
*i = 1;
theInts.push_back(i);
int j = 2;
theInts.push_back(&j);
std::vector<int*>::iterator iIt=theInts.begin();
for(;iIt<theInts.end();iIt++)
delete *iIt;
edit: я временно изменил вещи, чтобы использовать необработанные указатели, пока я смотрю на общие указатели, в то же время кто-то может сказать мне, еслиследующее безопасно?это сломанная версия того, что сейчас делает моя программа
vector<int*>theInts;
int* anInt = new int;
theInts.push_back(anInt);
if(NULL != anInt)
delete anInt;
anInt = NULL;
vector<int*>::iterator bIt = theInts.begin();
for(;bIt!=theInts.end();bIt++)
{
int* aInt = *bIt;
if(NULL!=aInt)
delete aInt;
aInt=NULL;
}
theInts.clear();