eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingadres metody w vtableRe: adres metody w vtable
  • Data: 2010-01-04 03:03:03
    Temat: Re: adres metody w vtable
    Od: Mariusz Marszałkowski <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 21 Gru 2009, 15:51, Krzysiek Kowaliczek
    <k...@g...com> wrote:
    > Użytkownik Krzysztof Poc napisał:
    >
    > > Witajcie
    >
    > > Czy ktos moze wie dlaczego ponizszy program nieprawidlowo pokazuje
    > > adres metody
    > > Inc() pobranej z vtable.
    >
    > [...]
    > >     uintptr_t *inc = reinterpret_cast <uintptr_t*> (*(vptr+4));
    >
    > Podpowiedź. O jaką wartość zostanie przesunięty wskaźnik vptr?
    > Na pewno nie o 4 bajty.
    > BTW. po co Ci to? Skąd wiesz jak kompilator implementuje metody
    > wirtualne? Standard nic nie mówi na ten temat. To jest zależne
    > od implementacji kompilatora.

    Nie pamiętam już gdzie, ale chyba pamiętam po co, zrealizowano
    metody wirtualne w postaci globalnej tablicy adresów, a wewnątrz
    składowych klasy zamieszczono indeksy do owej globalnej tablicy.

    A po co? Po to aby zaoszczędzić na pamięci, można obliczyć
    co do jednego bitu ile potrzeba pamięci na każdy indeks, natomiast
    adres metody wirtualnej to zawsze kilka bajtów.

    Apropo, przez takie sztuczki jeden z moch starych programów
    nie działa po skompilowaniu VC7 lub nowszym :)

    Pozdrawiam

    tablicy?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: