On Wed, 15 Jan 2003, Dorin Lazar wrote:
> Din cate shtiu eu nu exista, de aceea marea majoritate a limbajelor de
> nivel inalt spun ca C-ul este o gresheala imensa.
:-/ De ce? Te rog argumenteaza... mie nu mi se pare asa o "greseala
imensa" - ma rog, nu vorbesc de C++, doar de C.
> Problema este ca daca tu aloci ceva memorie, ar trebui sa shi shtii
> cata memorie aloci.
Evident, numai ca sunt situatii cand nu stii, sau nu "vrei" sa stii
(poate la un moment dat vreau sa transmit ca parametru o lista lunga de
pointer-i catre diferite zone de memorie, daca trebuie sa trimit si
dimensiunile ocupate se dubleaza necesarul de memorie si timpul pentru
transmiterea datelor... si daca fac asta de multe ori pe secunda, iti dai
seama ca este mai convenabil sa citesc informatia care deja exista acolo
printr-o functie libc).
> malloc-ul nu va aloca exact 1 octet pentru un apel malloc(1) - asta
> pentru a evita fragmentarea memoriei. De aceea get_allocated_size ar
> returna o valoare incorecta.
Pai stiu asta, numai ca nu am reusit sa-mi dau seama daca el retine
pe undeva si valoarea "exacta" ceruta de apel, sau doar pe cea care o
aloca. Oricum, o astfel de functie exista - numai ca este nedocumentata,
si limitata la sistemele cu glibc 2.x - se numeste "malloc_usable_size(p)"
- in cele cateva teste pe care le-am facut, functia asta a returnat
in general marimea corecta sau cu cativa octeti in plus, deci poate fi
folosita (zic eu) cu succes, daca te asiguri in prealabil ca toata
memoria este pusa pe 0 (sau altceva) inainte de a o folosi, ca sa poti sa
iti dai seama cand ai ajuns in partea "nefolosita" dar alocata.
Ce m-ar interesa pe mine este o metoda _portabila_ pentru a rezolva
problema asta...
Numai bine,
--
Mihnea-Costin Grigore [ "Tenebus Ipsilo Ibinem Catehens" ]
E-mail: [EMAIL PROTECTED] Home Page: http://mgc8.virtualave.net
---
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/