error valgrinda

0

Cześć :)
http://pastebin.com/8rsJQ75d
W Valgrindzie dostaję następujący błąd:

==8892== Mismatched free() / delete / delete []
==8892==    at 0x4C2A4BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8892==    by 0x400F8B: Y::~Y() (in /home/radek/Pulpit/plik)
==8892==    by 0x400FEB: Y::~Y() (in /home/radek/Pulpit/plik)
==8892==    by 0x400D79: main (in /home/radek/Pulpit/plik)
==8892==  Address 0x5a04b30 is 0 bytes inside a block of size 48 alloc'd
==8892==    at 0x4C2AC27: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8892==    by 0x400F09: Y::Y() (in /home/radek/Pulpit/plik)
==8892==    by 0x400D44: main (in /home/radek/Pulpit/plik)
==8892== 

O co chodzi?

0

jak new[] to i delete[].

0

dobrze, ale błąd nadal ten sam

0

Czytaj ze zrozumieniem.

class X {
public:
    virtual ~X() { }
};
class Y : public X{
public:
    int *k;
        Y(){
        k=new int[12];
    }
    ~Y(){
        delete[] k;
    }
};
int main(){
  X* base = new Y();
  delete base;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1