Problem sa dinamickom alokacijom memorije

Imam problem sa dinamickom alokacijom memorije u C++.

Dakle sledeci kod ne zeli da se izvrsi:

int main()
{
int *p1=new int;
int x = 5;
p1 = &x;
delete []p1;
return 0;
}

Gotovo isti kod kada se koristi unutar klase radi, takodje kod radi kada pre brisanja p1 postavim na NULL (ali to nije ono sto zelim), kod se ponasa isto nezavisno od toga da li koristim delete ili delete[] operator.

Da li neko ima ideju o cemu se radi?

Alociranje memorije sa new (jedan objekat, bez []) i brisanje sa delete[] uzrokuje undefined behavior, najčešće u vidu Runtime error-a. Koristi ili new/delete ili new[]/delete[].

Ok, ali kao sto sam rekao meni sve cetiri kombinacije new i delete sa i bez [] daju isti error.

Takodje, nekada new bez [] i delete [] rade sasvim okej.

Ne možeš sa delete (tj. delete[]) da obrišeš objekat koji nije kreiran pomoću new (tj. new[]), u ovom slučaju ti pokušavaš da obrišeš običnu lokalnu promenljivu.

U redu, to sasvim ima smisla!

Hvala!