ambigous: bestimmte methode erzwingen



  • der QImage konstruktor bietet zwei möglichkeiten, wie man seine daten über ein char array übergeben kann

    QImage(const uchar* data...
    QImage(char* udata...
    

    die daten les ich aus dem entsprechenden file ein. nur unterstützt fread natürlich kein const.

    uchar *imageData = new uchar[imageSize];
    fread(imageData, imageSize, 1, fp);
    fclose(fp);
    
    QImage image(imageData, header.width, header.height, QImage::Format_ARGB32);
    delete[] imageData;
    

    image verwendet nun die daten aus imageData per referenz, nach dem delete sind also alle pixelinfos futsch. ohne delete hab ich nen speicherleck eingebaut.

    hab nu irgendwie grad nen brett vorm kopf, wie ich das lös. kann man imageData nach dem laden const machen?

    steht hier und nicht im GUI forum, da es nicht wirklich Qt spezifisch ist.



  • Sicher dass Du ein Leck produzierst? Koennte ja sein, dass QImage es freigibt wenn es zerstoert wird. Es koennte auch sein, dass QImage die Daten kopiert und Du somit ruhig das delete machen kannst. Was sagt denn die Doku dazu?

    Ach so: const char* data = imageData;

    BTW: Falsches Forum.



  • [wegeditiert]

    hat sich erledigt. war wohl blind, hab den speicher zu früh freigegeben gehabt, nu ist alles fein.


Anmelden zum Antworten