FAQ - Grafik - TBitmap in TIcon umwandeln
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39236.html
In der Funktion wird ein Icon zur Laufzeit mit new erzeugt:
TIcon* icn = new TIcon();ico wird danach nirgendwo "deleted".
Wäre es nicht besser, es ausserhalb der Funktion zu deklarieren, um es nach Benutzung (irgendwo) zu "deleten"?
Danke
-
nein wäre es nicht. die funktion gibt doch einen zeiger auf das erstellte icon zurück. der anwender der diese funktion aufruft, muss sich also selber darum kümmern und den belegten speicher mit delete wieder freigeben.
// Bild laden Graphics::TBitmap *bmp = new Graphics::TBitmap(); bmp->LoadFromFile("c:\\blahfasel.bmp"); // in Icon konvertieren TIcon *icon = BitmapToIcon(bmp, clRed); if (icon) { // ... was machen // belegten Speicher freigeben delete icon; } else ShowMessage("Error while converting bitmap to icon");