🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: dziwny błąd

#308537
From: M.M.
Date: Wed, 04 May 2016 12:17
88 lines
3754 bytes
On Wednesday, May 4, 2016 at 2:10:32 PM UTC+2, Tomasz Kaczanowski wrote:
> W dniu 2016-05-04 13:16, M.M. pisze:
> >
> > Zadeklarowałem w programie strukturę do zwracania rezultatu.
> >
> > struct Result {
> >    Class object;
> >    double a;
> >    double b;
> > };
> >
> > Class to jakiś typ klasowy, dość duży i złożony.
> >
> > We wszelkich operacjach kopiowania i zwracania składowa 'b' była
> > tak jakby pomijana. Gdy np. kładłem na stosie zmienną automatyczną:
> >
> > Result res;
> >
> > to, rzecz jasna, w składowej 'b' należało spodziewać się śmieci i
> > śmieci w niej były.
> >
> > Gdy potem robiłem:
> >
> > res = other_res;
> >
> > albo
> >
> > res = function();
> >
> > To w składowej te śmieci pozostały. Byłem pewny na 100% UB. Błędu
> > szukałem, nawet jakiś znalazłem błąd, ale po poprawieniu znalezionego
> > błędu składowa 'b' nadal była tak jakby pomijana przy kopiowaniu.
> >
> > Dopisałem na końcu składową diagnostyczną:
> >
> > struct Result {
> >    Class object;
> >    double a;
> >    double b;
> >    int tmp;
> > };
> >
> > Wszystko działało poprawnie, składowe object, a i tmp były kopiowane
> > prawidłowo, natomiast składowa b nadal nietknięta. Bity w niej
> > pozostawały identyczne.
> >
> > Potem dodałem więcej składowych diagnostycznych
> > struct Result {
> >    int tmp1;
> >    Class object;
> >    int tmp2;
> >    double a;
> >    int tmp3;
> >    double b;
> >    int tmp4;
> > };
> >
> > I znowu wszystko się kopiuje prawidłowo, tylko nie składowa 'b'!
> >
> > W końcu zmieniłem nazwę struktury z Result na ResultL, czyli dopisałem
> > na końcu dużą literę 'L'.
> >
> > Program zaczął działać!
> >
> > Nie mam pojęcia co się dzieje. Jeszcze jedno: na wersjach debug i
> > release to samo. Niemożliwe aby przez UB zawsze pomijał składową 'b'.
> > Nazwa Result koliduje z czymś? Ale jeśli tak, to czemu kompilator
> > to kompiluje?
> >
> >
> > Używam:
> > g++ --version
> > g++ (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4
> >
> > Używam tego kompilator od... nie pamiętam dokładnie, ale może od 2-3
> > miesięcy, nigdy nie miałem z nim żadnych problemów.
> >
> > Macie jakieś pomysły?
> >
> > Pozdrawiam
> >
> >
> 
> Strzelam, że pewnie jakaś nazwa się przykrywa, bo wygląda to co najmniej 
> dziwnie.

Też tak pomyślałem, ale by się skompilowało?
Pozdrawiam
Technical Details
Message-ID: <8683bdbc-2412-47a3-99cd-cf746adbfffc@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.us.feeder.erje.net!news.glorb.com!11no1469359qgt.0!news-out.google.com!uv8ni58igb.0!nntp.google.com!i5no3047413ige.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <59d9275f-340d-40d8-9c99-ab15a0fe0766@googlegroups.com> <5729e6b4$0$691$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.129.79.201 with SMTP id d192mr5185838ywb.0.1462364253412;        Wed, 04 May 2016 05:17:33 -0700 (PDT)
X-Received: by 10.50.183.6 with SMTP id ei6mr662949igc.7.1462364253374; Wed, 04 May 2016 05:17:33 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.us.feeder.erje.net!news.glorb.com!11no1469359qgt.0!news-out.google.com!uv8ni58igb.0!nntp.google.com!i5no3047413ige.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Wed, 4 May 2016 05:17:33 -0700 (PDT)
In-Reply-To: <5729e6b4$0$691$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.37.232.66; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 178.37.232.66
References: <59d9275f-340d-40d8-9c99-ab15a0fe0766@googlegroups.com> <5729e6b4$0$691$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8683bdbc-2412-47a3-99cd-cf746adbfffc@googlegroups.com>
Subject: Re: dziwny błąd
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Wed, 04 May 2016 12:17:33 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit