Una clase con punteros potencialmente puede dar problemas. Tenemos que ser muy cuidadosos con su uso.
Deben ser creados y destruidos. No normal es crearlos en el constructor de la clase y destruirlos en el destructor. Si se asigna dinamicamente nuevos valores también deben destruirse previamente a la asignación dinámica.
Ten en cuenta que al hacer delete LLamaForm; lo que haces es llamar al destructor de la clase
Código:
TFormSecundario:: ~TFormSecundario();
En toda clase que tenga punteros debe implementarse un destructor que los destruya si la asignación fue dinámica.
Resumiendo, lo normal es hacer la asignación dinámica en el constructor, no en OnCreate y la destrucción en el destructor, no en OnDestroy, Esta es la forma de operar en C++. Otras formas pueden funcionar, si se hacen con cuidado, pero piensa que lo primero que se ejecuta al crear un objeto de una clase en C++ es el constructor con el que se crea, y lo último, el destructor.
Otra cosa, en tu código TObjeto *PssObj le asignas tras una referencia, espero que sea un error de transcripción. Asegúrate que el puntero asignado realmente existe en cada llamada....
Código:
__fastcall TFormSecundario::TFormSecundario(TComponent* Owner,TObjeto &PO): TForm(Owner)
{
PssObj = &PO // ???? Porqué no pasas directamente un puntero a TObjeto
.... Inicialización de punteros dinámicos.....
Vector1 = new ...
.......
}
__fastcall TFormSecundario::~TFormSecundario()
{
delete Vector1;
delete Vector2;
....
}
Saludos.