Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: Vlastná malloc funkcia

C a C++ C a C++ Vlastná malloc funkcia American English version English version

Aktivity (1)
Avatar
rosina.jakub
Člen
Avatar
rosina.jakub:7. října 2:41

Čaute,
vedel by mi niekto pomôcť s implementovanim vlastne malloc funkcie? Musí ísť o obojsmerne spájaný zoznam. Dosť sa s tým trápim a už mám málo času.

Ďakujem

 
Odpovědět 7. října 2:41
Avatar
V-D.sk
Člen
Avatar
Odpovídá na rosina.jakub
V-D.sk:7. října 16:30

nechapem, co potrebujes? Aby ti niekto spravil obojsmerne zretazeny zoznam?

 
Nahoru Odpovědět 7. října 16:30
Avatar
Odpovídá na rosina.jakub
Matúš Olejník:7. října 17:39

Ahoj, asi by si mal poslať viacej informácií ohľadom toho zadania. Keďže niečo podobné som na FIITke kedysi riešil :D tak predpokladám, že máte jeden globálny pointer, ktorý bude ako keby vaša celková dostupná pamäť a máte implementovať nejaké funkcie ako memory_init kde tým pointerom ukážeš na testom alokovanú pamäť. Potom treba implementovať niečo ako memory_alloc kde by si mal vytvoriť nejakú štruktúru nazvime ju memory_block v ktorej bude musieť byť hlavička s informáciami koľko daný blok má priradenej pamäte a či je aktuálne využívaný (nebola na ňom zavolaná funkcia memory_free) a ešte, keďže to máš robiť cez spájaný zoznam, bude musieť ukazovať na ďalší blok za ním.
Takže hneď na začiatku bude jeden blok s informáciu že je voľný a koľko pamäte je voľnej. Potom ak niekto zavolá memory_alloc(size) tak pozreš do prvého bloku a ak je voľný tak za začiatok bloku + size vytvoríš nový blok so zostávajúcou pamäťou a vrátiš pointer na ten alokovaný blok atď..ťažko sa to zo šupy opisuje :D Ak máš implementovať aj funkciu memory_free tak v nej príde ako parameter pointer na blok ktorý sa má uvoľniť a to pre teba bude znamenať že v hlavičke toho bloku nastavíš, že sa blok aktuálne nevyužíva, prípade spravíš nejaký merge voľných blokov (defragmentáciu).

Ak to nie je niečo na takýto spôsob, tak to ignoruj :D

Nahoru Odpovědět 7. října 17:39
/* I am not sure why this works but it fixes the problem */
Avatar
rosina.jakub
Člen
Avatar
Odpovídá na Matúš Olejník
rosina.jakub:7. října 20:51

Je to presne to čo potrebujem. Len mám dosť problém s tou implementáciou.

 
Nahoru Odpovědět 7. října 20:51
Avatar
rosina.jakub
Člen
Avatar
Odpovídá na Matúš Olejník
rosina.jakub:7. října 21:07

My to musíme ale riešiť explicitne, takže smerník mi neodkazuje na ďalší v poradí ale na ďalší voľný blok, preto obojsmerne spájaný zoznam.

 
Nahoru Odpovědět 7. října 21:07
Avatar
Odpovídá na rosina.jakub
Matúš Olejník:8. října 10:59

Skús možno poslať trocha viacej k tomu zadaniu, ale neviem ako budem stíhať.

Nahoru Odpovědět 8. října 10:59
/* I am not sure why this works but it fixes the problem */
Avatar
rosina.jakub
Člen
Avatar
rosina.jakub:8. října 11:01

Je to presne to čo si písal. Tiež som na FIIT-ke. Jediný rozdiel v tom čo si napísal ty je, že smerníky mi neodkazujú na ďalší a predošlý blok v poradí ako idú za sebou ale odkazujú na ďalší a predchádzajúci voľný blok.

 
Nahoru Odpovědět 8. října 11:01
Avatar
Caster
Člen
Avatar
Caster:17. října 0:34

Je otázka, jak velkou pamět potřebuješ alokovat. Pokud jde např. o načtení celého souboru a pak s daty pracovat v paměti, lze použít funkci VirtualAlloc, se kterou můžeš alokovat klidně i několik GB paměti.

 
Nahoru Odpovědět 17. října 0:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.