Keresés

Új hozzászólás Aktív témák

  • mgoogyi

    senior tag

    válasz Tomi_78 #4256 üzenetére

    A pointernek és a LoadFromFile-nak nincs köze egymáshoz.
    A pointer csak egy logikai memóriacím.

    A programod változói mind a memóriában vannak valahol.
    Az, hogy valami hol van, azt elrakhatod egy pointerbe, mint pl. egy int * p;
    Ebbe a p-be berakhatsz egy memóriacímet és utána azt tudod, hogy azon a memóriacímen - ami a p-ben van - van egy int értéked, azaz 4 byte-od egymás után.

    Az egyszerűség kedvéért 0-tól 1000-ig legyenek a lehetséges memóriacímek.
    Amikor leírok egy olyat, hogy new int, akkor a programod a memóriából kér magának 4 byte-ot egymás után, ahol majd az integer-ed tartalma lesz és ebből a 4 byteből az elsőnek a címét visszaadja. (A másik 3 byte közvetlen utána van.)
    Ezért tudod megtenni azt, hogy a int * p = new int; esetén a baloldalt ott van a p, ami értéket kap. Mégpedig ennek az 1. byte-nak a memóriában lévő sorszámát.

    Itt egy példakód megdebuggolva:

    A programom a (hexadecimális) 12461a8-as byte-tól kezdve kapott összesen 4 byte-ot.
    És erre a 4 byte-ra a 3-nak megfelelő adat lett beírva.

    Ez így világos?
    Olvasd el sokszor, ha nem érted, elég fontos, hogy ez meglegyen.

  • dabadab

    titán

    válasz Tomi_78 #4256 üzenetére

    Amit meg kell érteni jelen esetben az, hogy egyetlen darab AlakokKepe objektumod van és beállítottad azt, hogy mind a négy helyen erre az egyetlen egyre mutató link legyen.

    A kód, amit írtál, pontosan azt csinálja, mintha ebben a sorrendbe írtad volna:

    .
    AlakokKepe->LoadFromFile("alak\\alak_all.bmp");
    AlakokKepe->LoadFromFile("alak\\alak_lep1.bmp");
    AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
    kepei[0] = AlakokKepe;
    kepei[2] = AlakokKepe;
    kepei[1] = AlakokKepe;
    kepei[3] = AlakokKepe;

    és ebből következően az, aminek igazából hatása van, csak annyi, hogy

    .
    AlakokKepe->LoadFromFile("alak\\alak_lep2.bmp");
    kepei[0] = AlakokKepe;
    kepei[2] = AlakokKepe;
    kepei[1] = AlakokKepe;
    kepei[3] = AlakokKepe;

Új hozzászólás Aktív témák