Har hållit på ett tag nu med en sak men får ingen ordning på den alls.
Jag har en klass där jag behöver en destruktor för att inte få minnesläckor. Där finns en pekare till en array och i destruktorn står:
delete [] array;
Det fungerar bra om jag i main kallar den en gång som nedan:
MinKlass k = MinKlass();
Men om jag sedan omdeklarerar den som,
MinKlass k = MinKlass();
k = MinKlass();
så körs destruktorn direkt efter konstruktorn och tar bort den nya instansen och sedan i slutet av programmet så blir det förstås en krash då den försöker ta bort samma objekt igen.
Vem skapar 'array'? Enligt ditt exempel så skapas antingen array i konstruktorn av MinKlass eller är en global. Är det en global, eller att du t.ex. (trots exemplet) skickar in arrayen till MinKlass, så att båda pekar på samma minne så kommer det såklart att krascha. Isåfall gäller att du får ta bort det från nåt annat ställe i koden (t.ex. den som skapade den) eller använda nån typ av smart pointer.
(För övrigt finns det ingen mening att ha mer än MinKlass k; när man skapar objektet. Tar det argument så är det t.ex. MinKlass k(1, 2.5f); )