, исходя из мира 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?
}
Мои вопросы специально:
согласно Этот вопрос , не будет ParserObject
Выйти из охвата Каждая итерация, поскольку NEW
ключевое слово не используется? Очевидно, этот код работает.
В этом случае размещает объект в вектор VECTOR
ParserObject в области размещения
в области охвата?
согласно Этот вопрос , ParserObject копируется Отказ Если это так, каковы эффективные последствия (например, потребление памяти, распределение памяти и т. Д.) Этому? Кроме того, делайте скопированные ParserObjects, затем предполагают ту же спецификацию, что и вектор?
Спасибо за любую помощь.