можно ли удалить интеллектуальный указатель вручную?

Это может быть глупый вопрос, но я просто не уверен в ответе. Следующий код читает файл, и для каждой строки файла создается интеллектуальный указатель с помощью «new». Если интеллектуальный указатель будет использоваться в будущем, он сохраняется в списке, в противном случае он не сохраняется.

У меня такой вопрос: если интеллектуальный указатель не сохраняется, вызовет ли это потенциальную утечку памяти? Спасибо.

int main(){
    .....;
    std::list<SomeClass> aList;
    while(inFile >> ss){
         std::tr1::shared_ptr<SomeClass> aPtr(new SomeClass());
         //do something in foo(aPtr) to aPtr, 
         //if aPtr will be used later, then it's stored in aList
         //otherwise, it's not stored
         foo(aPtr);
    }
    .....;
}
5
задан Mat 29 April 2012 в 17:39
поделиться