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 18:22 | Nová verze

    Byla vydána nová major verze 28.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:11 | Zajímavý článek

    Český telekomunikační úřad zveřejnil Výroční zprávu za rok 2024 (pdf), kde shrnuje své aktivity v loňském roce a přináší i základní popis situace na trhu. Celkový objem přenesených mobilních dat za rok 2024 dosáhl dle odhadu hodnoty přibližně 1,73 tis. PB a jeho meziroční nárůst činí zhruba 30 %. Průměrná měsíční spotřeba dat na datovou SIM kartu odhadem dosáhla 12,5 GB – v předchozím roce šlo o 9,8 GB.

    Ladislav Hagara | Komentářů: 4
    dnes 12:33 | IT novinky

    Z novinek představených na Google I/O 2025: Přehledy od AI (AI Overviews) se rozšiřují do dalších zemí. Užitečné, syntetizované přehledy od generativní AI jsou nově k dispozici i českým uživatelům Vyhledávače.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | IT novinky

    Šestice firem označovaných jako „MAMAAN“ – tedy Meta (Facebook, Instagram), Alphabet (Google), Microsoft, Apple, Amazon a Netflix – je zodpovědná za více než padesát procent světového internetového provozu. Dalšími velkými hráči jsou TikTok a Disney+. Společně tak zásadně určují podobu digitálního prostředí, spotřebitelského chování i budoucích trendů v oblasti technologií. I přesto, že se podíl těchto gigantů od roku 2023 o něco snížil, jejich dominantní postavení zvyšuje volání po regulaci.

    Ladislav Hagara | Komentářů: 4
    dnes 11:33 | IT novinky

    Evropská komise (EK) navrhuje zavést plošný poplatek ve výši dvou eur (zhruba 50 Kč) za každý malý balík vstupující do Evropské unie. Poplatek se má týkat balíků v hodnotě do 150 eur (zhruba 3700 Kč), které v EU nepodléhají clu. V loňském roce bylo do EU doručeno kolem 4,6 miliardy takovýchto balíků. Poplatek má krýt náklady na kontroly rostoucího počtu zásilek levného zboží, které pochází především z Číny.

    Ladislav Hagara | Komentářů: 14
    včera 18:11 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Komunita

    V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).

    Ladislav Hagara | Komentářů: 0
    včera 15:00 | Nová verze

    Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 6
    včera 12:22 | Pozvánky

    Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.

    jose17 | Komentářů: 0
    včera 04:44 | IT novinky

    Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.

    Ladislav Hagara | Komentářů: 16
    Jaký je váš oblíbený skriptovací jazyk?
     (61%)
     (23%)
     (9%)
     (2%)
     (0%)
     (0%)
     (5%)
    Celkem 56 hlasů
     Komentářů: 5, poslední včera 20:57
    Rozcestník

    Dotaz: C++ - Segmentation fault pri tvoreni array s velkosťou premenna

    25.10.2010 11:22 PeterS. | skóre: 10
    C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Přečteno: 418×

    Ahoj,
    takže mam niečo takéto:

    int img_size[6] ;    //tu uložim veľkosť obrazku
    img_size[0] = srcimg.width;    // = 1414
    img_size[1] = srcimg.height;    // = 1060
    float image_ar [img_size[0]*img_size[1]][4];

    skompiluje to ale pri spustení hodí "Chyba segmentacie..."
    Ak to tak  dam číslo, teda

    float image_ar  [3145728][4];

    tak ten array vytvorí. V čom by to mohlo byť?


    Řešení dotazu:


    Odpovědi

    25.10.2010 11:54 Jan Trávníček | skóre: 10 | blog: ehonza | Existuje
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Pokud se nepletu tak velikost staticky definovaného pole musí být konstantní výraz. Jako řešení jedině použít malloc.
    To mess up a Linux box, you need to work at it; to mess up your Windows box, you just have to work on it.
    25.10.2010 12:02 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Nepleteš se
    Quando omni flunkus moritati
    25.10.2010 12:18 PeterS. | skóre: 10
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    k dynamickemu alokovaniu pamäte som ešte nedošiel, ale podľa manualu by to mohlo byť takto?

    image_ar = new float [img_size[0]*img_size[1]][4];

    áno?
    Saljack avatar 25.10.2010 12:52 Saljack | skóre: 28 | blog: Saljack | Praha
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Ano tohle by mělo fungovat.
    Sex, Drugs & Rock´n Roll.
    25.10.2010 14:39 PeterS. | skóre: 10
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna

    Doplnujúca otázka:
    urobil som niečo takéto:

    float * image_ar;             
    int ar_size = img_size[0]*img_size[1]*4;  //pomocná premenna, lebo v nasl riadku nechcelo brať vzorec ???
    image_ar = new float [ar_size];

    toto skompilovalo aj zbehlo bez problémov, "new" by malo hodiť výnimku keby neprebehlo, pokiaľ viem...
    lenže ja nechcem jednorozmernú array ale dvoj alebo trojrozmernú... čo s tým?

    25.10.2010 15:24 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
      float (*image_ar)[4];
      image_ar = new float[img_size[0]*img_size[1]][4];
      ...
      delete [] image_ar;
    

    Případně si rozmyslete, jestli by z těch čtyř floatů nebylo rozumnější udělat strukturu nebo třídu.

    25.10.2010 15:36 PeterS. | skóre: 10
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    super, toto funguje...

    no ja sa učim a zaroven prepisujem program z pythonu, pri akej štrukture skončim je vo hviezdach...

    a celá ta array bude využitá, momentálne tie "vrstvy" planujem použiť na RGB hodnoty a celkový jas daného pixelu....
    Řešení 1× (Michy)
    25.10.2010 12:37 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    V C99 to lze, normu C++ jsem nezkoumal, ale gcc to přeloží i s -std=c++98, takže ani tam asi nebude problém. Problém je s velikostí toho pole - s hodnotami, které uvádí tazatel, se nemá šanci vejít na zásobník (a nevejde se tam ani s tou konstantou, kterou uvádí v dotazu). Pokud ale šířku a výšku dám např. 100, program se spustí a správně funguje. Takže řešením nakonec opravdu je dynamická alokace, i když z trochu jiného důvodu.
    Michy avatar 25.10.2010 13:00 Michy | skóre: 11 | Praha
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Je to skutečně tak, staticky alokované pole je příliš velké, nevejde se do zásobníku, proto padá při spuštění na segmentation fault. Při dynamické alokaci, pomocí new, se vytváří v heapu a tam se obvykle vejde. Obecně je vhodné se vyhnout alokacím velkého množství paměti v zásobníku, protože jeho velikost je omezená zpravidla na jednotky MB.
    25.10.2010 13:04 Ivan
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Tohle je pripad kdy C++ neni nadmnozinou C. V C++ opravdu pole musi mit znamou velikost. G++ to sezere, MSVC ne. Muzes bud pouzit malloc a naalokovat to na heapu anebo alloc a naalokovat to na stacku. S tim stackem muzes ale narazit na max. velikost zasobniku, hlavne u vice vlaknove aplikace. Velikost zasobniku na linuxu je defaultne 8MB, za timhle prostorem a jedna zamcena stranka a za ni zacina stack dalsiho vlakna(pokud existuje).
    25.10.2010 13:16 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: C++ - Segmentation fault pri tvoreni array s velkosťou premenna
    Ono ani na těch 8 MB není dobré moc spoléhat. U multithreadových aplikací běžně používám 512 KB, ale už jsem byl nucen jít i na 128 KB.

    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.