Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Zarovnavanie alokovanej pamate

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Re[2]: Zarovnavanie alokovanej pamate

Autor: Jaroslav Šmíd

19:22:04 22.11.2011

Alokace/realokace paměti může být náročná (různé zamykání, hledání kdesi ...), proto např. při tvoření nějakého pole, od kterého se čeká že bude měnit velikost provádí po větších kusech, kvůli rychlosti přidávání nových prvků (často se právě volí dvojnásobek předchozí velikosti), nemá to nic společného s tím, že by to někde mohlo přetéci, nebo co tu někdo tvrdil. Rozhodně je ale nesmysl alokovat 128B pro nějaké pole, které se měnit nebude a stačí 100, nějaké ty věcičky kolem, to už si nějak pořeší ten malloc sám.

Citovat příspěvek

 

Re: Zarovnavanie alokovanej pamate

Autor: Jaroslav Šmíd

19:21:07 22.11.2011

Alokace/realokace paměti může být náročná (různé zamykání, hledání kdesi ...), proto např. při tvoření nějakého pole, od kterého se čeká že bude měnit velikost provádí po větších kusech, kvůli rychlosti přidávání nových prvků (často se právě volí dvojnásobek předchozí velikosti), nemá to nic společného s tím, že by to někde mohlo přetéci, nebo co tu někdo tvrdil. Rozhodně je ale nesmysl alokovat 128B pro nějaké pole, které se měnit nebude a stačí 100, nějaké ty věcičky kolem, to už si nějak pořeší ten malloc sám.

Citovat příspěvek

 

Re[2]: Zarovnavanie alokovanej pamate

Autor: LadislavZezula

13:00:38 22.10.2011

> No ale v zavere ta HeapAlloc potom este vola VirtualAlloc podla
> potreby, aspon tak som sa to docital.

Jen v pripade, kdyz alokujes 0x1000 bytu nebo vice. Ale vetsina
alokaci je malych.

L.



Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Zarovnavanie alokovanej pamate

Autor: Tomkiboy

9:47:42 22.10.2011

No ale v zavere ta HeapAlloc potom este vola VirtualAlloc podla potreby, aspon tak som sa to docital.

Dakujem za odpoved.

Citovat příspěvek

 

Re: Zarovnavanie alokovanej pamate

Autor: LadislavZezula

9:07:32 22.10.2011

> zarovnavanie? Ked potrebuje niekto 100 bytov, tak radoby programator
> hned alokuje 128, ale je to naozaj vyhodnejsie ako ta presna 100vka,
> ked ono to v tej pamati aj tak lieta cez 4K stranky pomocou
> VirtualMalloc

Operator new nealokuje pomocí VirtualAlloc, to by ti ta pamet dosla
jeste pred tím nez se prihlasis. New vola interne malloc, a ten zase
HeapAlloc, potazmo RtlAllocateHeap (HeapAlloc je jen forwarded export)

Alokovat vice nez je nutne je nesmysl. Vetsinou to delaji
programatori, kteri neumeji pocitat, takze kdyz potrebuji 100 bajtu,
tak "pro jistotu" naalokuji vice. Co kdyby to preteklo, ze.

Ale tak trochu se zapomina ze existuji nastroje integrovane v systemu,
(jako napr. page heap), ktere si overi, jestli jsi nahodou neprelezl
za konec bufferu.

> dokonca som niekde pocul ze pri debuggovani sa alokuje vzdy o 5 bytov
> viacej, ak by nahodou zapisoval niekto dalej

Toto dela debug verze operatoru new a debug verze funkce malloc.
Kdyz to presvihnes, tak se pri uvolnovani na to prijde a vyhodi to
assert. Ale release verze programu toto nedela.

L.



Příspěvek zaslán emailem

Citovat příspěvek

 

Zarovnavanie alokovanej pamate

Autor: Tomkiboy

23:53:55 21.10.2011

Dobry den,
casto sa stretavam s ukazkovymi kodmi a tutorialmi, kde si pri dynamickej alokacii pamate cez malloc, new, atd. programatori alokuju nejake to pole bytov ktore je nasobkom 8,16, pripadne inej mocniny 2. Moja otazka je, preco sa to vobec tak robi. Vie niekto nejaky konkretny priklad, kde to ma vobec zmysel, taketo zarovnavanie? Ked potrebuje niekto 100 bytov, tak radoby programator hned alokuje 128, ale je to naozaj vyhodnejsie ako ta presna 100vka, ked ono to v tej pamati aj tak lieta cez 4K stranky pomocou VirtualMalloc, dokonca som niekde pocul ze pri debuggovani sa alokuje vzdy o 5 bytov viacej, ak by nahodou zapisoval niekto dalej ako moze, tak aby nenastal hned crash. Ma to skutocne opodstatnenie, alebo to dava len programatorom lepsi pocit ze su optimalny voci systemu?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: