Я попытался найти Google и найти ответ на свой вопрос, но я не смог найти никакого действительного объяснения, поэтому я размещаю свой вопрос здесь. Ниже приведен пример кода и вывода:
#include <iostream>
#include "vector"
using namespace std;
typedef struct Node{
int data;
Node(){
data = 0;
std::cout << "Node created. " << this <<'\n';
}
~Node(){
data = 0;
std::cout << "Node destroyed. " << this <<'\n';
}
} Node;
int main() {
std::vector<Node> vec;
for(int i = 0; i < 2 ; i++)
vec.push_back( *(new Node));
return 0;
}
Вывод:
Node created. 0x9e0da10
Node created. 0x9e0da30
Node destroyed. 0x9e0da20
Node destroyed. 0x9e0da40
Node destroyed. 0x9e0da44
Почему существует дополнительный разрушение и почему создаются объекты, отличные от уничтоженного объекта?