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