-
21. Data: 2012-06-05 10:13:47
Temat: Re: Try catch, prawidłowy sposób użycia
Od: "AK" <n...@n...com>
Użytkownik " M.M." <m...@N...gazeta.pl> napisał :
> Faktycznie delete nie wywala się gdy otrzyma null.
> Trochę się zdziwiłem, pamiętam że się wywalało.
Nieprawda. Baaardzo dawno temu wywalało sie free ( i teoretycznie moze sie wciaz
wywalac:).
delete _z zasady_ (standard C++) nie wywala sie na NULL i nigdy sie nie wywalalo.
PS: Polecam idiom: delete ptr, ptr = 0;
PS1: nie polecam idiomu: delete ptr; ptr = 0;
> To kwestia opcji/kompilatora ?
Jesli sie wywala to jest kwestia tylko i wylacznie jakosci kompilatora
AK
-
22. Data: 2012-06-05 10:16:10
Temat: Re: Try catch, prawidłowy sposób użycia
Od: "AK" <n...@n...com>
Użytkownik <n...@m...invalid> napisał w wiadomości:
>> To kwestia opcji/kompilatora ?
> Tak. Ściśle rzecz biorąc, w C++ to UB.
Nieprawda !
> RT może to milcząco zignorować,
> wykonać nieoczekiwane zatrzymanie, lub cokolwiek.
Nie.
Dla NULLa po prostu nic sie nie dzieje
AK
-
23. Data: 2012-06-05 10:44:52
Temat: Re: Try catch, prawidłowy sposób użycia
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2012-06-05, AK <n...@n...com> wrote:
> Użytkownik " M.M." <m...@N...gazeta.pl> napisał :
>
>> Faktycznie delete nie wywala się gdy otrzyma null.
>> Trochę się zdziwiłem, pamiętam że się wywalało.
>
> Nieprawda. Baaardzo dawno temu wywalało sie free ( i teoretycznie moze sie wciaz
wywalac:).
A kto ci tak nakłamał że może?
--
Secunia non olet.
Stanislaw Klekot
-
24. Data: 2012-06-05 11:41:26
Temat: Re: Try catch, prawidłowy sposób użycia
Od: zażółcony <r...@c...pl>
W dniu 2012-06-05 09:01, Edek Pienkowski pisze:
> Dnia Tue, 05 Jun 2012 08:43:17 +0200, zażółcony napisal:
>
>> W dniu 2012-06-04 19:21, Edek Pienkowski pisze:
>>
>>> Mutex to nie jest semafor. Nie ma problemu z zamykaniem go w try. To
>>
>> Trochę odbiegamy od tematu, ale ...
>> Wrzuciłem w google 'mutex', kliknąłem w pierwszy lepszy link:
>> http://koti.mbnet.fi/niclasw/MutexSemaphore.html
>>
>> i masz:
>> "A mutex is really a semaphore with value 1."
>> :)
>> I właśnie to dokładnie miałem na myśli.
>
> Jak znajdę link w sieci do psoszczura, to uwierzysz że psoszczur
> istnieje?
Zasugerowałeś odwrócony związek przyczynowo-skutkowy.
A tymczasem najpierw była wiara, a potem link.
Wiara ma inne, znacznie wcześniejsze podstawy, z czasów,
kiedy internet kojarzyło się jeszcze z luksusem
a google nie istniał :)
A tak na serio - ja tam się upierać nie będę bo i po co.
Nie wiem, skąd Twoje parcie, by te dwie sprawy rozróżniać,
czy to kwestia tego, ze masz na myśli jakąś konkretną
implementację mutexów w postaci obiektowej, czy zawężasz
ich funkcję do pracy w wątkach, a nie między procesami
czy jeszcze coś innego. Czy może utożsamiasz mutex
z jakimś rodzajem tokena - wszystko to zawiera jakiś
element racji.
Podobnie, jak w wielu kontekstach rację zawiera
twierdzenie, że muteks to funkcjonalnie semafor 0-1.
-
25. Data: 2012-06-05 12:36:42
Temat: Re: Try catch, prawidłowy sposób użycia
Od: Edek Pienkowski <e...@g...com>
Dnia Tue, 05 Jun 2012 11:41:26 +0200, zażółcony napisal:
> W dniu 2012-06-05 09:01, Edek Pienkowski pisze:
>> Dnia Tue, 05 Jun 2012 08:43:17 +0200, zażółcony napisal:
>>
>>> W dniu 2012-06-04 19:21, Edek Pienkowski pisze:
>>>
>>>> Mutex to nie jest semafor. Nie ma problemu z zamykaniem go w try. To
>>>
>>> Trochę odbiegamy od tematu, ale ...
>>> Wrzuciłem w google 'mutex', kliknąłem w pierwszy lepszy link:
>>> http://koti.mbnet.fi/niclasw/MutexSemaphore.html
>>>
>>> i masz:
>>> "A mutex is really a semaphore with value 1."
>>> :)
>>> I właśnie to dokładnie miałem na myśli.
>>
>> Jak znajdę link w sieci do psoszczura, to uwierzysz że psoszczur
>> istnieje?
>
> Zasugerowałeś odwrócony związek przyczynowo-skutkowy.
> A tymczasem najpierw była wiara, a potem link.
> Wiara ma inne, znacznie wcześniejsze podstawy, z czasów, kiedy internet
> kojarzyło się jeszcze z luksusem a google nie istniał :)
>
> A tak na serio - ja tam się upierać nie będę bo i po co. Nie wiem, skąd
> Twoje parcie, by te dwie sprawy rozróżniać,
> czy to kwestia tego, ze masz na myśli jakąś konkretną implementację
> mutexów w postaci obiektowej, czy zawężasz ich funkcję do pracy w
> wątkach, a nie między procesami czy jeszcze coś innego. Czy może
> utożsamiasz mutex z jakimś rodzajem tokena - wszystko to zawiera jakiś
> element racji.
> Podobnie, jak w wielu kontekstach rację zawiera twierdzenie, że muteks
> to funkcjonalnie semafor 0-1.
Niby tak, widziałem nawet implementację mutexa, takiego wątkowego, za
pomocą semafora, takiego z IPC, w końcu niby można używać IPC tylko z
jednego procesu. Ale to rozwiązanie nie było za fajne i w szczegółach
semafor i mutex zaczynają mieć inne właściwości, żeby mieć rekursywny
mutex dla wygody tak jak w Javie, gdzie każdy Object jest rekursywnym
mutexem, o ile pamiętam implementacja za pomocą semafora wygałaby thread
local gdyby nie fakt, że thread local w IPC nie istnieje więc tam
rozwiązanie było zakręcone na kilka nowych ciekawych sposobów.
Ale ok, w ramach rozmowy o tym a nie kodu można powiedziedzieć,
że mutex czy inny prosty lock to semafor 0/1.
Edek
-
26. Data: 2012-06-05 14:52:32
Temat: Re: Try catch, prawidłowy sposób użycia
Od: n...@m...invalid
W dniu 5.06.2012 r. 7:25, Waldek M. pisze:
> Dnia Tue, 05 Jun 2012 00:47:26 +0200, n...@m...invalid napisał(a):
>>> Faktycznie delete nie wywala się gdy otrzyma null.
>> Tak. Ściśle rzecz biorąc, w C++ to UB. RT może to milcząco zignorować,
> Standard 5.3.5, par. 1,2 (expr. delete):
> Delete na NULL jest jak najbardziej dopuszczalny i nie jest to UB.
Przyjąłem, dziękuję, wycofuję.
-
27. Data: 2012-06-05 14:53:26
Temat: Re: Try catch, prawidłowy sposób użycia
Od: n...@m...invalid
W dniu 5.06.2012 r. 10:16, AK pisze:
> Użytkownik <n...@m...invalid> napisał w wiadomości:
>
>>> To kwestia opcji/kompilatora ?
>> Tak. Ściśle rzecz biorąc, w C++ to UB.
>
> Nieprawda !
W rzeczy samej.
-
28. Data: 2012-06-05 16:47:21
Temat: Re: Try catch, prawidłowy sposób użycia
Od: Andrzej Jarzabek <a...@g...com>
On 05/06/2012 11:36, Edek Pienkowski wrote:
> Dnia Tue, 05 Jun 2012 11:41:26 +0200, zażółcony napisal:
>
>>>> "A mutex is really a semaphore with value 1."
>
> Niby tak, widziałem nawet implementację mutexa, takiego wątkowego, za
> pomocą semafora, takiego z IPC, w końcu niby można używać IPC tylko z
Raczej w powyższym zdaniu nie chodziło o semafor taki z IPC tylko o taki
z Dijkstry.
> jednego procesu. Ale to rozwiązanie nie było za fajne i w szczegółach
> semafor i mutex zaczynają mieć inne właściwości, żeby mieć rekursywny
> mutex dla wygody tak jak w Javie, gdzie każdy Object jest rekursywnym
No ale mutex jako taki (bez dodatkowego określenia) rekursywny nie jest.
Rekursywny jest "rekursywny mutex".
-
29. Data: 2012-06-05 17:12:35
Temat: Re: Try catch, prawidłowy sposób użycia
Od: "AK" <n...@n...com>
Użytkownik <n...@m...invalid> napisał:
>W dniu 5.06.2012 r. 10:16, AK pisze:
>> Użytkownik <n...@m...invalid> napisał w wiadomości:
>>
>>>> To kwestia opcji/kompilatora ?
>>> Tak. Ściśle rzecz biorąc, w C++ to UB.
>>
>> Nieprawda !
> W rzeczy samej.
Dopowiem:
aostreznie (!) dyskusji :) mialo na celu _wylacznie_ wbicie do glowy
szczegolnie mlodym adeptom w/w faktu.
Po prostu zbyt czesto widze kod upstrzony tak:
if ( ptr != NULL )
{
delete ptr;
}
zamiast:
delete ptr, ptr = NULL;
AK
-
30. Data: 2012-06-05 17:15:46
Temat: Re: Try catch, prawidłowy sposób użycia
Od: "AK" <n...@n...com>
Użytkownik <n...@m...invalid> napisał:
>W dniu 5.06.2012 r. 10:16, AK pisze:
>> Użytkownik <n...@m...invalid> napisał w wiadomości:
>>
>>>> To kwestia opcji/kompilatora ?
>>> Tak. Ściśle rzecz biorąc, w C++ to UB.
>>
>> Nieprawda !
> W rzeczy samej.
Dopowiem:
zaostrzenie (!) dyskusji :) z mej strony mialo na celu _wylacznie_ wbicie do glowy
szczegolnie mlodym adeptom C++ w/w faktu.
Po prostu zbyt czesto widze kod upstrzony tak:
if ( ptr != NULL )
{
delete ptr;
}
zamiast:
delete ptr, ptr = NULL;
AK