Wie der Kommentar sagt - das Ergebnis ist, dass das Verhalten des Programms undefiniert ist.
Wenn Sie "new" mit "free" haben, werden Ihre Destruktoren nicht aufgerufen. Das führt in der Regel zu Speicher- und Ressourcenlecks.
Wenn Sie "malloc" mit "delete" verwenden, erhalten Sie keine Konstruktoraufrufe, so dass Ihre Objekte nicht initialisiert sind. Das kann zu allen möglichen Fehlern führen, z. B. wenn der Destruktor aufgerufen wird.
Wie in dem unten stehenden Kommentar angedeutet, gibt es Dinge in Nicht-POD-Typen (z. B. Klassen, die virtuelle Methoden haben, und Klassen, die virtuelle Vererbung verwenden), die initialisiert werden müssen, auch wenn es nicht sofort offensichtlich ist, dass eine Konstruktorinitialisierung erforderlich ist. Wenn Sie ein Objekt malloc und dann eine virtuelle Methode aufrufen, wird Ihr Programm höchstwahrscheinlich abstürzen.
Wenn alle Ihre Typen POD (Plain Old Data) sind, haben Sie vielleicht Glück, aber das hängt sehr stark von Ihrem Compiler ab - es gibt keine Garantie, dass "malloc" und "new" denselben Heap verwenden, so dass es bei einigen Compilern zu Heap Corruption und Abstürzen kommen kann.
Kurz gesagt: Tun Sie es nicht.