eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingtypologia errorow aplikacji
Ilość wypowiedzi w tym wątku: 88

  • 51. Data: 2011-05-06 07:39:05
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: p...@p...onet.pl

    > Dnia 06-05-2011 o 01:29:52 Michoo <m...@v...pl> napisał(a):

    >

    > > W dniu 05.05.2011 00:32, fir pisze:

    > >>> tworzenia stu instancji ktore pozniej moga spokojnie hulac

    > >>

    > >> wogole to nie chcialem sie wdawac w takie dlugie wyjasnienia, chcialem

    > >> tylko owiedziec (a nawet wcale nie chcialem tego pwiedzec) tylko  

    > >> zauwazyc

    > >> ze tak jest:

    > >>

    > >> w statycznym c NAPRAWDE nie ma takiego pojecia i problemu

    > >> jak leaki (jest to pojecie absolutnie nieznane)

    > > Pokazałem Ci leak w statycznym kodzie. i to bardzo prostym.

    > >

    > > Mam cały czas wrażenie, że podchodzisz do programowania z punktu  

    > > widzenia programów "Ahoj przygodo!!!" w którym żeby mieć  

    > > błąd/leak/nieoczekiwane zachowanie trzeba się naprawdę postarać. Gdy  

    > > tymczasem programowanie to dużo, dużo więcej a wykrycie błędów w  

    > > "statycznym C fira" jest wyjątkowo trudne.

    > >

    > >> jak ktos nie wierzy to mz jego problem

    > > Tak, bo Twoja racja jest najtwojsza...

    >

    > Prawdę mówiąc, w tym przypadku zgadzam się z autorem pierwszego posta.  

    > Twój przykład nie ma wycieku pamięci jako takiego, tylko nieumiejętne  

    > zarządzanie tablicą. Jeśli mam tablicę od 0 do 9 i ustalę, że pierwszym  

    > elementem jest 5, to mimo tego w każdym miejscu programu nadal jestem w  

    > stanie dostać się do pierwszych czterech elementów. Jeśli napiszę zaś  

    > funkcję, która zaalokuje pamięć i jej nie zwolni (oraz nigdzie nie  

    > pozostawi do niej wskaźnika), to w praktyce *nie* jestem w stanie do tej  

    > pamięci już się dostać. To jest bardzo istotna różnica, która - moim  

    > zdaniem - nie pozwala nazwać pierwszego przypadku wyciekiem pamięci.

    >

    > Fir mówi o wyciekach pamięci na poziomie zarządzania pamięcią operacyjną,  

    > Ty mówisz o "wyciekach" na poziomie logiki programu.

    >

    > Inaczej: napisz mi taki program (w C++), który używa tylko obiektów  

    > alokowanych statycznie i zgłosi wyciek pamięci:

    >

    > #define _CRTDBG_MAP_ALLOC

    > #include <crtdbg.h>

    >

    > int main (int argc, char * argv[])

    > {

    > // Tu Twój kod

    >

    > _CrtDumpMemoryLeaks();

    > }

    >

    > Pozdrawiam -- Spook.

    >

    co do tamtego przykladu (se spawn itd) to najkrocej mowiac roznica
    jest taka ze w jednym wypadku niezwolnione obiekty sa 'martwe'
    (wyciekly, nie mozna ich uzyc) zas w drugim doskonale i w pelni
    'zywe' (nietkniete, zdrowe, itp)


    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 52. Data: 2011-05-06 07:45:52
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Jacek Czerwinski <...@...z.pl>

    W dniu 2011-05-06 01:29, Michoo pisze:
    > W dniu 05.05.2011 00:32, fir pisze:

    >
    > Mam cały czas wrażenie, że podchodzisz do programowania z punktu
    > widzenia programów "Ahoj przygodo!!!"

    Zeby zostawic tupolewa a pozostac przy lotnictwie, w obszernym watku
    wspomnianym.
    To co dociera do mnie o Airbusie, to jest po prostu straszne. Bledny /
    niepewny / niezaufany odczyt z jednego czujnika (rurka Pito) wynika ze
    blokowal cale sterowanie samolotem. Trudno w to uwierzyc, ale kto wie...

    Jesli dziennikarze czegos nie sfabrykowali (co jest tez mozliwe) to
    projektanta nie nalezy rozstrzelac, tylko bardzo powoli, zeby sobie
    ostatni raz design przemyslal....


  • 53. Data: 2011-05-06 07:53:38
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Andrzej Jarzabek <a...@g...com>

    On 06/05/2011 05:31, Wojciech "Spook" Sura wrote:
    >
    > Fir mówi o wyciekach pamięci na poziomie zarządzania pamięcią
    > operacyjną, Ty mówisz o "wyciekach" na poziomie logiki programu.

    Jak zaalokujesz pamięć przez malloc i nie zwolnisz przez free to błąd
    jest na poziomie logiki programu.

    Z drugiej strony jeśli masz statyczną tablicę, w której masz wolną pulę
    elementów, które sobie przydzielasz dla nowych danych i zwracasz z
    powrotem do puli, to to co w tym momencie robisz, to właśnie forma
    "zarządzania pamięcią".

    > Inaczej: napisz mi taki program (w C++), który używa tylko obiektów
    > alokowanych statycznie i zgłosi wyciek pamięci:
    >
    > #define _CRTDBG_MAP_ALLOC
    > #include <crtdbg.h>
    >
    > int main (int argc, char * argv[])
    > {
    > // Tu Twój kod
    >
    > _CrtDumpMemoryLeaks();
    > }

    Wyciek to z definicji to, co zgłosi _CrtDumpMemoryLeaks()? Nie popadajmy
    w absurd.


  • 54. Data: 2011-05-06 08:34:16
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Michal Kleczek <k...@g...com>

    Wojciech "Spook" Sura wrote:

    > Dnia 03-05-2011 o 01:14:36 Andrzej Jarzabek <a...@g...com>
    > napisał(a):
    >
    >> On 02/05/2011 22:06, f...@W...gazeta.pl wrote:
    >>> czyli w skrocie -> ZAPCHANIE sobie tablicy (przez bledy w poodznaczaniu
    >>> flag) to nie WYCIEKI
    >>
    >> To są wycieki.
    >
    > Kwestia definicji. Program nadal może dostać się do "zapchanych" elementów
    > tablicy jawnie ją indeksując.

    To prawda. Ale sterte tez mozesz sobie przegladac/iterowac itd.

    > Ba, można banalnie łatwo napisać odśmiecacz,
    > który z powrotem odzyska nieużywane rekordy.

    Nie mozna, bo skad wiadomo, ktore sa nieuzywane?

    --
    Michal


  • 55. Data: 2011-05-06 08:39:01
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: p...@p...onet.pl

    > Dnia 03-05-2011 o 01:14:36 Andrzej Jarzabek <a...@g...com>  

    > napisał(a):

    >

    > > On 02/05/2011 22:06, f...@W...gazeta.pl wrote:

    > >> czyli w skrocie ->  ZAPCHANIE sobie tablicy (przez bledy w poodznaczaniu

    > >> flag) to nie WYCIEKI

    > >

    > > To są wycieki.

    >

    > Kwestia definicji. Program nadal może dostać się do "zapchanych" elementów  

    > tablicy jawnie ją indeksując. Ba, można banalnie łatwo napisać odśmiecacz,  

    > który z powrotem odzyska nieużywane rekordy. Natomiast nie ma już szansy  

    > odzyskać utraconego wskaźnika do dynamicznie zaalokowanej pamięci.

    >

    > Błąd architektury, logiki programu - jak najbardziej tak. Wyciek? Nie.

    >

    > >> (z tego jak to widze leaki raczej nieodzownie lacza

    > >> sie z utraconymi referencjami czyli nieodzownie zagubionym ramem)

    > >

    > > To jest tylko kwestia implementacyjna. Logicznie masz ten sam problem:  

    > > jeśli element w tablicy nie może być już do niczego użyty (nie ma i  

    > > logicznie nie mogą pojawić się indeksy tego elementu), a nie został  

    > > oznaczony jako wolny czy wpisany do puli wolnych elementów, to RAM  

    > > zajmowany przez ten element jest "nieodzownie zagubiony".

    >

    > Tylko że Firowi _cały czas chodzi o fizyczne wycieki_, a nie o logiczne,  

    > związane z konstrukcją programu. Tobie zaś chodzi o logiczne (w których  

    > zawierają się fizyczne) i dlatego obaj kłócicie się bezproduktywnie.

    >

    leak z definicji to sytuacja w ktorek traci sie referencje do
    kawalka ramu

    przyklad leaka:

    unsigned char* p = NULL;
    p = malloc(1000);
    p = malloc(2000); //wyciek!

    tu wogole nie ma pojecia zwalniania - leak dotyczy _utracen referencji_

    porzytek z dyskusji jest przynajmniej taki (choc niespecjalnie duzy)
    ze wyklarowalo mi sie pojecie leaka


    --
    kanye west - graduation



    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 56. Data: 2011-05-06 08:42:18
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: "kenobi" <p...@p...onet.pl>

    > Wojciech "Spook" Sura wrote:

    >

    > > Dnia 03-05-2011 o 01:14:36 Andrzej Jarzabek <a...@g...com>

    > > napisał(a):

    > >

    > >> On 02/05/2011 22:06, f...@W...gazeta.pl wrote:

    > >>> czyli w skrocie ->  ZAPCHANIE sobie tablicy (przez bledy w poodznaczaniu

    > >>> flag) to nie WYCIEKI

    > >>

    > >> To są wycieki.

    > >

    > > Kwestia definicji. Program nadal może dostać się do "zapchanych" elementów

    > > tablicy jawnie ją indeksując.

    >

    > To prawda. Ale sterte tez mozesz sobie przegladac/iterowac itd.

    >

    niby jak?

    > > Ba, można banalnie łatwo napisać odśmiecacz,

    > > który z powrotem odzyska nieużywane rekordy.

    >

    > Nie mozna, bo skad wiadomo, ktore sa nieuzywane?

    >

    > --

    > Michal



    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 57. Data: 2011-05-06 08:44:40
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Andrzej Jarzabek <a...@g...com>

    On Tue, 03 May 2011 08:59:52 +0200, Paweł Kierski<n...@p...net>
    wrote:
    > Inaczej - zgubienie uchwytu do zasobu (np. wskaźnika do
    > bloku pamięci) jest jednym (pewnie najpopularniejszym)
    > sposobem powstawania wycieków.

    Można też zauważyć, że jeśli przydziela się w programie elementy ze
    statycznej tablicy, to taki element można traktować jak zasób, a
    indeks jako uchwyt. Zresztą przecież te wszystkie systemowe uchwyty i
    deskryptory to zwykle są indeksy w jakichś systemowych tablicach.


  • 58. Data: 2011-05-06 08:52:09
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: p...@p...onet.pl


    > tu wogole nie ma pojecia zwalniania - leak dotyczy _utracen referencji_

    defakto nie wiem czy przypadkiem cos takiego

    f()
    {
    char* txt ="yellow girls are running backwards";

    }

    nie spalnia definicji leaka - bo ref jest tracona a dane, o ile
    wiem, zostaja raczej na stercie (bezuzyteczne), niz sa zwijane ze stosu



    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 59. Data: 2011-05-06 09:01:06
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: p...@p...onet.pl

    > On Tue, 03 May 2011 08:59:52 +0200, Paweł Kierski<n...@p...net>

    > wrote:

    > > Inaczej - zgubienie uchwytu do zasobu (np. wskaźnika do

    > > bloku pamięci) jest jednym (pewnie najpopularniejszym)

    > > sposobem powstawania wycieków.

    >

    > Można też zauważyć, że jeśli przydziela się w programie elementy ze

    > statycznej tablicy, to taki element można traktować jak zasób, a

    > indeks jako uchwyt. Zresztą przecież te wszystkie systemowe uchwyty i

    > deskryptory to zwykle są indeksy w jakichś systemowych tablicach.

    mozna ale nie trzeba i ja tak nie robie - wogole mam raczej na pienku z
    uchwytami

    --
    Wysłano z serwisu OnetNiusy: http://niusy.onet.pl


  • 60. Data: 2011-05-06 09:41:29
    Temat: Re: typologia errorow aplikacji (a jeszcze leipaj i realoki)
    Od: Michoo <m...@v...pl>

    W dniu 06.05.2011 06:31, Wojciech "Spook" Sura pisze:
    > Prawdę mówiąc, w tym przypadku zgadzam się z autorem pierwszego posta.
    > Twój przykład nie ma wycieku pamięci jako takiego, tylko nieumiejętne
    > zarządzanie tablicą. Jeśli mam tablicę od 0 do 9 i ustalę, że pierwszym
    > elementem jest 5, to mimo tego w każdym miejscu programu nadal jestem w
    > stanie dostać się do pierwszych czterech elementów. Jeśli napiszę zaś
    > funkcję, która zaalokuje pamięć i jej nie zwolni (oraz nigdzie nie
    > pozostawi do niej wskaźnika), to w praktyce *nie* jestem w stanie do tej
    > pamięci już się dostać.
    Alokator sobie gdzieś istnieje, więc MOŻESZ się do niej dostać.
    Bezpieczne to nie jest, ale możliwe ;)

    > Fir mówi o wyciekach pamięci na poziomie zarządzania pamięcią
    > operacyjną, Ty mówisz o "wyciekach" na poziomie logiki programu.
    W którymś z postów już napisałem, że ograniczanie się do czystych
    "memory leaks" na poziomie systemu operacyjnego jest sztuczne, bo
    mechanizm "wycieku" zasobów jest ten sam i dla pamięci, i dla puli
    obiektów i dla socketów: w momencie gdy pozbywamy się referencji na
    obiekt nie zwalniamy go.

    A prawie w każdym systemie musimy mieć dynamiczny przydział zasobów - w
    ten czy inny sposób, więc zachwalanie jakiejś metodyki dlatego, że w
    niej nie wycieka "czysta pamięć" jest bez sensu, bo błąd tego samego
    typu może spowodować wyciek innego zasobu.

    > Inaczej: napisz mi taki program (w C++), który używa tylko obiektów
    > alokowanych statycznie i zgłosi wyciek pamięci:
    Pokazałem kod w którym raz jest alokacja oparta o new/delete a raz
    przydział z puli. Reszta kodu jest DOKŁADNIE taka sama. Czy to znaczy,
    że w drugiej sytuacji nic nam nie "wyciekło"?
    Imo wyciekło, tylko nie "czysta pamięć" a obiekty z puli, ale mechanizm
    jest dokładnie ten sam.

    --
    Pozdrawiam
    Michoo

strony : 1 ... 5 . [ 6 ] . 7 ... 9


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: