std :: manejo de memoria vectorial
Traté de buscar en Google y buscar una respuesta a mi pregunta, pero no pude encontrar ninguna explicación válida, por lo tanto, estoy publicando mi pregunta aquí. El siguiente es mi código de muestra y salida:
#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;
}
Salida:Node created. 0x9e0da10
Node created. 0x9e0da30
Node destroyed. 0x9e0da20
Node destroyed. 0x9e0da40
Node destroyed. 0x9e0da44
¿Por qué hay una destrucción adicional y por qué los objetos creados son diferentes del objeto destruido?