eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingadres metody w vtableRe: adres metody w vtable
  • Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!news.nask.pl!news.nask.
    org.pl!newsfeed00.sul.t-online.de!t-online.de!news-out2.kabelfoon.nl!newsfeed.k
    abelfoon.nl!xindi.nntp.kabelfoon.nl!198.186.194.249.MISMATCH!news-out.readnews.
    com!transit3.readnews.com!postnews.google.com!a6g2000yqm.googlegroups.com!not-f
    or-mail
    From: Mariusz Marszałkowski <m...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: adres metody w vtable
    Date: Sun, 3 Jan 2010 19:03:03 -0800 (PST)
    Organization: http://groups.google.com
    Lines: 35
    Message-ID: <6...@a...googlegroups.com>
    References: <b...@j...googlegroups.com>
    <hgo1pa$111$1@news.onet.pl>
    NNTP-Posting-Host: 89.229.16.190
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1262574183 16396 127.0.0.1 (4 Jan 2010 03:03:03 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Mon, 4 Jan 2010 03:03:03 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: a6g2000yqm.googlegroups.com; posting-host=89.229.16.190;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.2; pl; rv:1.9.1.6)
    Gecko/20091201 Firefox/3.5.6,gzip(gfe),gzip(gfe)
    Xref: news-archive.icm.edu.pl pl.comp.programming:184375
    [ ukryj 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: