abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

dnes 08:00 | Pozvánky

V Praze dnes probíhá konference Internet a Technologie 17.2 pořádaná sdružením CZ.NIC. Sledovat ji lze online. K dispozici je také archiv předchozích konferencí. Sdružení nedávno vydalo bezpečnostní pexeso. Ke stažení jako pdf pod licencí CC BY-NC-SA.

Ladislav Hagara | Komentářů: 0
dnes 07:22 | Nová verze

Byla vydána verze 10.2 a krátce na to opravná verze 10.2.1 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 10
dnes 06:22 | Pozvánky

V úterý 28. listopadu se v Brně koná již 4. přednáškový večer Ruby Stories. Těšit se můžete na témata jako TDD, hybridní mobilní aplikace či programování v Elixiru. Více informací na Facebooku nebo se rovnou registruj na Eventbrite. Na místě bude zdarma drink a lehké občerstvení, tak dorazte.

ondrej-zadnik | Komentářů: 0
dnes 06:11 | Pozvánky

V úterý 28. 11. 2017 bude další Prague Containers Meetup. DC/OS a Mesos vás provede Mesosphere's Developer Advocate Matt Jarvis.

little-drunk-jesus | Komentářů: 0
včera 14:44 | Komunita

Mozilla.cz informuje, že Firefox bude možná upozorňovat na úniky vašich hesel. V Mozille prototypují upozorňování na únik informací o vašem účtu, pokud se na seznamu Have I been pwned? objeví služba, ke které máte ve Firefoxu uložené přihlašovací údaje. Informace se objevila v pravidelném newsletteru o vývoji Firefoxu.

Ladislav Hagara | Komentářů: 5
včera 00:22 | Bezpečnostní upozornění

Společnost ZONER informuje o bezpečnostním incidentu, při kterém došlo ke zcizení a zveřejnění části přihlašovacích údajů zákazníků k elektronické poště a webhostingu CZECHIA.COM.

Ladislav Hagara | Komentářů: 0
22.11. 23:44 | Nová verze

Byla vydána nová stabilní verze 1.13 (1.13.1008.32) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují možnost zobrazení otevřených i uzavřených listů pomocí ikonky Okno na postranní liště a vylepšené stahování (YouTube). Nejnovější Vivaldi je postaveno na Chromiu 62.0.3202.97.

Ladislav Hagara | Komentářů: 9
22.11. 20:55 | Nová verze

Byla vydána verze 2017.3 dnes již průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux. Aktualizovat systém lze pomocí příkazů "apt update; apt dist-upgrade; reboot". Z novinek lze zmínit 4 nové nástroje: InSpy, CherryTree, Sublist3r a OSRFramework.

Ladislav Hagara | Komentářů: 1
22.11. 01:55 | Bezpečnostní upozornění

Společnost Uber potvrdila bezpečnostní incident a únik dat v roce 2016. Unikly údaje o 57 milionech cestujících (jména, emailové adresy a čísla mobilních telefonů) a 600 tisících řidičích (navíc čísla řidičských průkazů).

Ladislav Hagara | Komentářů: 1
21.11. 23:44 | Humor

Co vypíše příkaz man půl hodiny po půlnoci? Text "gimme gimme gimme". Jedná se o virtuální velikonoční vajíčko připomínající skupinu ABBA a její hit Gimme! Gimme! Gimme! (A Man After Midnight). Problém nastane, pokud gimme gimme gimme nabourá automatizované testování softwaru. To se pak příkaz man musí opravit [Bug 1515352] [reddit].

Ladislav Hagara | Komentářů: 10
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 761 hlasů
 Komentářů: 37, poslední 21.11. 15:21
    Rozcestník

    Dotaz: C - dynamicka alokace pole

    15.7.2014 19:31 Lada
    C - dynamicka alokace pole
    Přečteno: 297×
    Jak v C spravne naalokovat trirozmerne dynamicke pole? Ucim se z Herouta, prvni dil mam za sebou a pustil jsem se do druheho ale toto mi stale neni jasne, neni to tam tak uplne vysvetlene. Priklad: chci trirozmerne pole s X, Y, Z rozmery, typu int. Zajimala by me jednak sturktura "pole pointeru" a tez "pointer na pointer". Pokud mozno i testem prideleni s naslednym uvolnenim pameti, mam v tom trochu gulas. Diky za pomoc, Lada

    Řešení dotazu:


    Odpovědi

    15.7.2014 20:40 pou | skóre: 16
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole

    Dělal bych to asi tak to:

     

    int len_a;
    int len_b;
    int len_c;

    int ***p;
    p=malloc(len_a*sizeof(**int));
    for(int i=0;i<len_a;i++){
    p[i]=malloc(len_b*sizeof(*int));
    for(int j=0;j<len_b;j++)
    p[i][j]=malloc(len_c*sizeof(int));
    }

    Řešení 1× (pou)
    16.7.2014 13:06 lertimir | skóre: 61 | blog: Par_slov
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Ten zápis je opravdu korektní alokace pro 3D pole, ale jak už tady psali, rozumnější je udělat něco jako:
    int len_a;
    int len_b;
    int len_c;
    
    int *p2;
    
    p2=malloc(len_a*len_b*len_c*sizeof(int));
    
    a potom k prvku a,b,c se přistupuje p2[a*len_b*len_c+b*len_c+c]

    má to tu výhodu, že jsou data kompaktně naalokována. A alokace paměťového bloku od systému je obecně dost pomalá operace. Na druhou stranu v případě, že se intenzívně pracuje přes indexy a a b může mít výhodu ten standardní přístup, protože k prvku pole se přistupuje přes dvakrát pointer a 3x sčítání a není tam násobení. Ten standardní přístup se sem přídá tím, že naalokuji ještě.
    
    int ***p, **p1;
    p=malloc(len_a*sizeof(**int));
    p1=malloc(len_a*len_b*sizeof(*int));
    for(int i=0;i<len_a;i++){
      p[i]=p1+i*len_b;
      for(int j=0;j<len_b;j++){
        p1[j+i*len_b]=p2+(i*len_b+j)*len_c;
      }
    }
    
    A pak je p2 pole dat, poskládané tak, že c prvek je nejrychlejší, p1 pole pointrů na data, každý pointr ukazuje na prvek s nulovým c indexem, p pole pointrů do pole pointrů, každý pointr ukazuje na pointr, který směřuje na prvek s nulovou hodnotou indexu b.
    Josef Kufner avatar 15.7.2014 20:54 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Vícerozměrná pole v C jsou tak trošku iluze. Nejlepší je spočítat si velikost potřebného bloku paměti a alokovat si ho najednou. K přístupu pak použít mapovací makro či funkci, která přepočítá 3D souřadnice na 1D.
    Hello world ! Segmentation fault (core dumped)
    15.7.2014 22:26 Petr | skóre: 29
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    "Nejlepší je spočítat si velikost potřebného bloku paměti a alokovat si ho najednou." a neslouzi k tomu prave funkce malloc?
    Josef Kufner avatar 15.7.2014 22:32 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Slouží. A jejím parametrem je velikost paměti v bytech, což je to, co si má spočítat.
    Hello world ! Segmentation fault (core dumped)
    15.7.2014 22:34 Kit | skóre: 39 | Brno
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Myslel tím, aby se ta funkce malloc() nevolala v cyklu tolikrát, ale jen jednou.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    Josef Kufner avatar 15.7.2014 22:34 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Přesně tak.
    Hello world ! Segmentation fault (core dumped)
    15.7.2014 22:37 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    Slouží k té druhé části, k té první se může hodit operátor sizeof ;-)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    15.7.2014 22:46 MadCatX
    Rozbalit Rozbalit vše Re: C - dynamicka alokace pole
    To samozřejmě slouží, ale než volat malloc() veletucetkrát ze dvou vnořených cyklů je lepší udělat malloc(sizeof(my_type_t) * x * y * z).

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.