Malloc + 2d arrays + C
Christos Ricudis
ricudis at giwtoula.paiko.gr
Wed Mar 20 09:31:01 EET 2002
In article <mailman.1016575926.18713.linux-greek-users at lists.hellug.gr>, Vasilis Vasaitis wrote:
>> > Xwris na isxurizomai oti gnwrizw C auto pou mou kanei entupwsi einai
>> > i parapanw grammi to 'sizeof(char *) ' ti timi akribws exei????
>>
>> Exei thn timh toy fysikou mege8ous enos pointer sthn target arxitektonikh,
>> poy nomizw oti den einai akribws ayto poy skeftotan o original author toy
>> sygkekrimenou kwdika prin parei narkwtika.
>
> Αντιθέτως, είναι από τα λίγα πράγματα που ο συγκεκριμένος κώδικας
> καταφέρνει να κάνει σωστά. Αντί να κάνει malloc() ολόκληρο τον πίνακα, και
> μετά να χρησιμοποιεί πολλαπλασιασμό (μπλιαχ) για την «διδιάστατη»
> προσπέλαση, κάνει πρώτα malloc() έναν πίνακα από δείκτες, και σε καθέναν από
> αυτούς μετά έναν πίνακα από χαρακτήρες. Ή αλλιώς, instant 2D, the C way.
Pragma poy einai o lan8asmenos tropos na ylopoihseis ena disdiastato array,
otan ta bounds ths deyterhs diastashs einai constant, poso mallon a priori
gnwsta.
Sthn periptwsh toy 'disdiastatou array' exeis :
* Ena memory allocation sto initialization
* Ena pollaplasiasmo kai mia pros8esh ana access
* Ena memory deallocation sto telos
Sthn periptwsh toy 'array of N pointers' exeis :
* N memory allocations sto initialization (+ malloc housekeeping)
* To fetching toy pointer kai mia pros8esh ana access
* N memory deallocations sto telos
Poio apo ta dyo sou fainetai pio aplo, grhgoro, cache friendly, ktl ktl ktl?
--
Christos Ricudis
ric-NOSPAM-udis at paiko.gr Remove -NOSPAM- to reply
spamoula at paiko.gr Send your spam here
More information about the Linux-greek-users
mailing list