Article View: pl.comp.lang.c
Article #306Re: Dlaczego to dziala?!?!?!?
From: Jarek Kucypera
Date: Fri, 14 Nov 1997 20:23
Date: Fri, 14 Nov 1997 20:23
52 lines
2098 bytes
2098 bytes
Michal A. Polak <M.Polak@bss.com.pl> napisa³(a) w artykule
<346C80A9.B046A500@bss.com.pl>...
> Jest nastepujacy program (uruchomiony na linuxie - gnu cc - oraz win95
> skompilowany builderem, po niewielkich przerobkach):
>
> ---------------------------------------------------------------
> #include<stdio.h>
>
> class CCos
> {
> public:
> int a;
> int b;
> int ple() {return a*b;}
> };
>
> typedef struct
> {
> CCos *me;
> char c[8];
> } TCos;
>
> int main()
> {
> TCos ala;
> ala.me = (CCos *) &ala;
> ((CCos *)&ala)->a = 2;
> ((CCos *)&ala)->b = 3;
>
> printf("%d\n",((CCos*) &ala)->ple());
>
> return 0;
> }
> Pytanie zostalo przedstawione w tutule, z tym ze nie chodzi mi o
> dzialanie kodu programu przedstawionego powyzej, lecz po malych
> zmianach, tj, gdy:
> - w strukturze TCos jedna lub obie zmienne zostaje zakomentowane
> - i/lub wywalmy linie: ala.me = (CCos *) &ala;
Ogólnie linia: "ala.me = (CCos *) &ala" nic nie wnosi, bo póniej
ala.me nie jest nigdzie odczytywane (nie ma go w ¿adnym obliczanym
wyra¿eniu ani nigdzie po prawej stronie znaku przypisania).
Jeli zakomentujesz jedno z pól struktury TCos, to program
ma szanse dzia³aæ, bo akurat w danym kompilatorze
sizeof(CCos *)==2*sizeof(int), i zawsze bêdziesz grzebaæ
wewn¹trz struktury ala.
Natomiast jeli zakomentujesz oba pola TCos, hm ...
mo¿e faktycznie masz fuksa.
Technical Details
Message-ID:
<01bcf13a$e13252a0$2701070a@jark.insert.igo.wroc.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!news.icm.edu.pl!news.nask.pl!gate-inet.insert.igo.wroc.pl!newsReferences:
<346C80A9.B046A500@bss.com.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!news.icm.edu.pl!news.nask.pl!gate-inet.insert.igo.wroc.pl!news From: "Jarek Kucypera" <jark@insert.com.pl> Newsgroups: pl.comp.programming,pl.comp.lang.c,pl.comp.lang.delphi Subject: Re: Dlaczego to dziala?!?!?!? Date: 14 Nov 1997 20:23:19 GMT Organization: InsERT Lines: 55 Message-ID: <01bcf13a$e13252a0$2701070a@jark.insert.igo.wroc.pl> References: <346C80A9.B046A500@bss.com.pl> NNTP-Posting-Host: igo23.igo.wroc.pl Mime-Version: 1.0 X-Newsreader: Microsoft Internet News 4.70.1161 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit