デストラクタ A::~A が呼ばれません。
こいつは C++Builder のバグですか? それとももしかして仕様ですか?

------------ unit2.h ------------
struct A;
struct B{
 A* a;
 B();
 ~B(){ delete a; }
};
------------- unit2.cpp ----------
#include "unit2.h"
#include <cstdio>
using namespace std;
struct A{
 ~A(){ printf("A::~A()\n"); }
};
B::B()
{
 a = new A();
}
------------ unit1.cpp -----------
#include "unit2.h"
int main()
{
 B b;
 return 0;
}