🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #306

Re: Dlaczego to dziala?!?!?!?

#306
From: Jarek Kucypera
Date: Fri, 14 Nov 1997 20:23
52 lines
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).

Jeœli 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 jeœli 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!news
References: <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