¿Cuál es el problema con malloc () y las funciones virtuales? [duplicar

Posible duplicado:
C ++: ¿por qué esnew ¿necesario

¿Por qué no puedo usar malloc para asignar espacio a mis objetos cuando son hijos de una clase que contiene funciones virtuales? Esto es realmente frustrante. ¿Hay una buena razón?

El siguiente programa ilustra el problema. Segfaults en la línea 27, donde llamo aa-> f ()

#include <iostream>
#include <cstdlib>

class A 
{
public:
    virtual int f() {return 1;}
};

class B 
{
public:
    int f() {return 1;}
};

class Aa : public A {};

class Bb : public B {};

int main()
{
    Aa* aa = (Aa*)malloc(sizeof(Aa));
    Aa* aan = (Aa*)new Aa();
    Bb* bb = (Bb*)malloc(sizeof(Bb));
    std::cout << bb->f() << std::endl;
    std::cout << aan->f() << std::endl;
    std::cout << aa->f() << std::endl;
    return 0;
}

nformación de la versión: g ++ (Ubuntu / Linaro 4.4.4-14ubuntu5) 4.4.5

Respuestas a la pregunta(7)

Su respuesta a la pregunta