Qual é o problema com malloc () e funções virtuais? [duplicado

Possible Duplicate:
C ++: por que énew necessário

Por que não posso usar o malloc para alocar espaço para meus objetos quando eles são filhos de uma classe que contém funções virtuais? Isso é realmente frustrante. Existe uma boa razão?

O programa a seguir ilustra o problema. Segfaults na linha 27, onde eu chamo 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;
}

Info da versão: g ++ (Ubuntu / Linaro 4.4.4-14ubuntu5) 4.4.5

questionAnswers(7)

yourAnswerToTheQuestion