🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: dziwny błąd

#308540
From: Tomasz Kaczanowski
Date: Wed, 04 May 2016 12:10
89 lines
3504 bytes
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.


-- 
Kaczus
http://kaczus.ppa.pl
Technical Details
Message-ID: <5729e6b4$0$691$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!newsfeed.fsmpi.rwth-aachen.de!newsfeed.straub-nv.de!weretis.net!feeder4.news.weretis.net!news.roellig-ltd.de!open-news-network.org!cyclone01.ams2.highwinds-media.com!voer-me.highwinds-media.com!peer01.am1!peering.am1!peer04.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <59d9275f-340d-40d8-9c99-ab15a0fe0766@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!newsfeed.fsmpi.rwth-aachen.de!newsfeed.straub-nv.de!weretis.net!feeder4.news.weretis.net!news.roellig-ltd.de!open-news-network.org!cyclone01.ams2.highwinds-media.com!voer-me.highwinds-media.com!peer01.am1!peering.am1!peer04.fr7!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Wed, 04 May 2016 14:10:28 +0200
From: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.24) Gecko/20100228 Thunderbird/2.0.0.24 Mnenhy/0.7.6.0
MIME-Version: 1.0
Newsgroups: pl.comp.lang.c
Subject: Re: dziwny błąd
References: <59d9275f-340d-40d8-9c99-ab15a0fe0766@googlegroups.com>
In-Reply-To: <59d9275f-340d-40d8-9c99-ab15a0fe0766@googlegroups.com>
Lines: 89
Message-ID: <5729e6b4$0$691$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.187.17.90
X-Trace: 1462363829 unt-rea-a-01.news.neostrada.pl 691 79.187.17.90:45741
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Body-CRC: 1314978867
X-Received-Bytes: 3176
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit