On Mi, 2003-01-15 at 18:39, Mihnea-Costin Grigore wrote: > :-/ De ce? Te rog argumenteaza... mie nu mi se pare asa o "greseala > imensa" - ma rog, nu vorbesc de C++, doar de C.
Memory leaks. Buffer overflows. Etc etc. Documenteaza-te inainte, ca doar impresiile nu isi au locul. Si vorbesti doar din impresii... C++ nu are probleme de alocare a memoriei atita timp cit e C++ (si nu un oarecare cu prostul obicei de a combina C cu C++). Si in cazul asta, programarea de la scoala nu prea ajuta. > 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). Trebuie sa stii tot timpul cit si unde. Altfel se cheama crappy programming si vine de la necunoasterea unor reguli de baza sau de la lucrat prea multe ore fara pauza. > 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 Daca ceri o valoare, poti sa o stochezi undeva. Pentru ca regula in C este -1 pentru failed function. Atita vreme cit result != -1 ramine valabil cit i-ai dat. Toate functiile din familia *alloc lucreaza cu blocuri _continue_ de memorie. Punctul de start il ai in pointer (si nu il uiti niciodata pina la eliberarea cu succes a memoriei) si lungimea vectorului o ai de cind ai zis ca vrei (sau de la redimensionarea incheiata cu succes). Acum, hai sa te gindesti logic un moment - asta e functie (nu procedura de pascal). Deci introduci un numar N de parametrii, primesti un rezultat. Daca inceputul vectorului este dat (altfel nu ai putea lucra cu spatiul alocat), unde mai e loc de dimensiune? > 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)" Numele zice "usable". End of story. > Ce m-ar interesa pe mine este o metoda _portabila_ pentru a rezolva > problema asta... malloc (daca scrii in C) verificat pentru erori de programare cu mai multe biblioteci pentru debug/leaks. --- Pentru dezabonare, trimiteti mail la [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'. REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
