[C]Detekce konstanty Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: [C]Detekce konstanty

Příspěvekod faraon » 27 bře 2014 20:18

Ten realloc() přece :-D
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: [C]Detekce konstanty

Příspěvekod CZechBoY » 27 bře 2014 20:19

Jo ale když mám právě char pevna[1024] = {0}; tak jak to předělám aby se mi tam toho vešlo víc?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: [C]Detekce konstanty

Příspěvekod faraon » 27 bře 2014 20:42

Refaktorizace -> rekompilace :lol:

Tak tohle za běhu nepředěláš, protože to je na zásobníku, a tam máš velikost pevnou. Ale šlo by jednotlivé bloky po 1024B dynamicky nabírat rekurzí, a všechna data nakonec zkopírovat do nějakého alokovaného pole z posledního vnoření. Během návratu z rekurze by se ti zase automaticky zrušil ten vícenásobný buffer, a zůstal by ti jen ukazatel na nově vytvořené pole.
Ale musíš počítat s režií a také zásobník není nekonečný, já na Linuxu mám 8MiB, a mám pocit že kdysi ve Widlích to byly jen 4MiB!

Edit: Oprava - z posledního vnoření pouze alokovat a zkopírovat svojí část, předchozí bloky by se musely zpětně kopírovat během vynořování.
Naposledy upravil(a) faraon dne 27 bře 2014 20:43, celkem upraveno 1 x.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: [C]Detekce konstanty

Příspěvekod CZechBoY » 27 bře 2014 20:43

Takže jsme došli k čemu? Že prostě je lepší alokovaná paměť.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: [C]Detekce konstanty

Příspěvekod faraon » 27 bře 2014 20:48

Ale v devětadevadesáti procentech případů ti dostatečně dimenzovaný statický buffer stačí, stačí si jen ohlídat možnou chybu.

Pokud počítáš s tím že načítaná data budou velmi velká, postavíš celý program úplně jinak, a smíříš se s tím že ti to malloc() bude brzdit.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: [C]Detekce konstanty

Příspěvekod CZechBoY » 27 bře 2014 20:49

Malloc brzdí? Jsem spíš myslel, že ti pak program bude zabírat míň místa v paměti. Je to sice na heapu, ale i tak.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: [C]Detekce konstanty

Příspěvekod faraon » 27 bře 2014 20:55

Sice budeš mít jen tolik místa kolik opravdu potřebuješ, ale to vyhledání volného místa odpovídajícího požadavku také chvíli trvá. Zvlášť když knihovna programu nemá zrovna dostatečnou rezervu a musí žádat operační systém o nový blok...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: [C]Detekce konstanty

Příspěvekod CZechBoY » 27 bře 2014 20:56

Takže říkáš, že dostatečně velká proměnná je výhodnější jo?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: [C]Detekce konstanty  Vyřešeno

Příspěvekod faraon » 27 bře 2014 20:58

Prakticky by to mělo vyjít nastejno, jen s menší režií, protože na zásobníku je to jednodušší. Akorát že ten buffer existuje pouze po dobu práce funkce (nebo musí být static), zatímco alokovanou paměť můžeš používat i mimo funkci. Prostě použiješ to co se ti zrovna víc hodí.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti