Path: csiph.com!weretis.net!feeder4.news.weretis.net!news.unit0.net!news.nask.pl!news.nask.org.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: bartekltg Newsgroups: pl.comp.programming Subject: =?UTF-8?Q?Re:_g++_debug_bez_inicjalizacji_pami=c4=99ci?= Date: Thu, 1 Nov 2018 15:59:57 +0100 Organization: ATMAN - ATM S.A. Lines: 41 Message-ID: References: <2d28eae2-6996-4a78-a3ae-a0aec84a1a04@googlegroups.com> <1955d2cc-8d0c-4eae-b9b9-611430b20aae@googlegroups.com> <2a9826bb-a908-43ee-bc3b-073287ad720b@googlegroups.com> <9f406662-30cc-4e29-8166-89ee3e2123be@googlegroups.com> NNTP-Posting-Host: 89-70-113-215.dynamic.chello.pl Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: node2.news.atman.pl 1541084398 23884 89.70.113.215 (1 Nov 2018 14:59:58 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Thu, 1 Nov 2018 14:59:58 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 In-Reply-To: <9f406662-30cc-4e29-8166-89ee3e2123be@googlegroups.com> Content-Language: en-GB Xref: csiph.com pl.comp.programming:31929 On 01.11.2018 08:33, szykcech@gmail.com wrote: >>>>> Chodzi o to, że wersja debug ma inicjalizowaną pamięć zerami, a wersja release nie. >>>> >>>> Ale jaka pamięć (nie) jest inicjalizowana zerami? Chodzi o obiekty statyczne (w tym globalne), czy dynamiczne? >>> >>> G++ w wersji debug automatycznie inicjalizuje alokowaną pamięć zerami. G++ nie robi tego w wersji release >> >> Wydaje mi się, że Maciejowi chodziło o co innego: >> >> Co robisz, że używasz jakiejś pamięci, której nie dotknął >> konstruktor jakeigoś obiektu. > > Głowny problem w tym programie to wskaźniki i zmienne typu int (i ich warianty). Wskaźniki globalne i w klasach wyszukałem i zainicjalizowałem. Wskaźniki to ogolnie coś, czego powinno się unikać w c++, ale rozumiem, ujowo napisana biblioteka do raspi w stylu procków embended 4kB ramu:-) Podobnie globalne... Może da się tego pozbyć;-) >Jednak problem może dotyczyć zmiennych lokalnych. >Wygląda nato, że w wersji debug są inicjalizowane przez kompilator, > a w wersji release nie... I ja chcę by w wersji debug nie były > inicjalizowane - by szybciej znaleźć błąd. Nie deklaruj zmiennych bez przypisania. Jeśli się nie da, a chcesz wyłapać (bez debugera;p) użycie wskażnika bez zainicjalizoanej wartości, inicjalizuj je na wartość, które na pewno wywali program. No, chyba, że przewidujesz, żę wskaźnik możę na nic nie pokazywać w trakcie działąnia praogramu i wszędzie sprawdzasz, czy nie jest nulem, to wtedy ręcznie inicjalizuj go na null. Ale IMHO to prawie zawsze gorsze rozwiazanie pzdr bartekltg