Я боюсь, что столкнусь с проблемами утечки памяти, выполнив следующие действия:
(Образец кода)
class myItem //random container stuff mostly. All primatives.
{
int index;
char* name;
int val1;
int val2;
};
class vecList
{
vector< myitem* > *myVec;
void delete()
{
MyVec->erase(std::remove_if(myVec->begin(), MyVec->end(), IsMarkedToDelete), MyVec->end()); //leak here?
}
};
Erase не освобождает память, если это указатель, верно? Если бы я не использовал remove_if, я мог бы вызвать удаление указателя перед его уничтожением. Как бы я поступил в этом случае? Умные указатели? Я бы предпочел не переделывать все с ними, и я действительно не хочу добавлять библиотеку повышения.
Спасибо!
myitem
и что именно содержитmyitem
... - person Smash   schedule 01.11.2011nonowning_ptr
, который по сути является необработанным указателем, но с описательным именем, вы можете полностью избежать использования необработанных указателей. :) - person Xeo   schedule 01.11.2011vector<myitem> myVec
, а затем в функции удаления использовать.
вместо->
? - person Smash   schedule 01.11.2011nonowning_ptr
. - person deft_code   schedule 01.11.2011nonowning_ptr
. ;) Это все о выражении ваших намерений. - person Xeo   schedule 01.11.2011iterator::operator++
,iterator::operator*
илиiterator::operator->
вызовут исключение. - person Raedwald   schedule 01.11.2011