Управляющий срок службы возможностей и объекта в рамках векторов STL

, исходя из мира C #, я изо всех сил пытаюсь убедиться, что я не введем утечки памяти и ошибки в проекте C ++, который я был назначен к. Я пишу код, который использует структуры для анализа информации из буфера данных. Поскольку количество структур данных, которые появляются в буфере, могут варьироваться во время выполнения, вектор STL используется для хранения обработанных данных. Я наткнулся на следующий блок кода в существующем программном обеспечении, и пытаюсь понять, почему он работает:

MyVectorOfObjects.clear();
for (unsigned __int8 i = 0; i < NumberOfObjects; i++)
{
    MyParserObject parserObject;                // Declaring without 'new'?
    parserObject.Decode(buffer, offset, size);  // A method on the struct.
    MyVectorOfObjects.push_back(parserObject);  // Does this keep parserObject in scope?
}

Мои вопросы специально:

  1. согласно Этот вопрос , не будет ParserObject Выйти из охвата Каждая итерация, поскольку NEW ключевое слово не используется? Очевидно, этот код работает.

  2. В этом случае размещает объект в вектор VECTOR ParserObject в области размещения в области охвата?

  3. согласно Этот вопрос , ParserObject копируется Отказ Если это так, каковы эффективные последствия (например, потребление памяти, распределение памяти и т. Д.) Этому? Кроме того, делайте скопированные ParserObjects, затем предполагают ту же спецификацию, что и вектор?

Спасибо за любую помощь.

8
задан Community 23 May 2017 в 12:25
поделиться