On Thu, 2003-01-16 at 01:24, Raider wrote: > 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.
De cand sunt astea probleme ale limbajului?! Sunt erori de programare dude! C-ul este low-level, nimeni nu neaga asta (unii ar spune ce e doar o interfata mai avansata pt assembler), dar tocmai de aici vine puterea lui: esti STAPAN. => flexibilitate. Daca te impusti in picior e problema ta (nu esti destul de bun). Apuca-te de Java :D > 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. Eu zic ca tu ar trebui sa te documentezi, sa vezi un pic care este opinia generala privind C vs C++. Ca punct de pornire ti-as sugera sa postezi intrebarea pe lkml si pe urma sa fugi si sa te ascunzi ;) > > 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. Corect, si prin urmare nu ai nevoie de nici un mecanism opac pt gestiunea meoriei. malloc/free sunt de ajuns. > > 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? Functiile de gestiune a memoriei stocheaza informatii despre zonele alocate _inainte_ de zona propriu-zisa (cu alte cuvinte aloca ceva mai mult iar la inceput isi baga informatiile private). Peace -- Florin Malita web: http://www.malinux.net public key: http://www.malinux.net/data/fmalita.gpg -- Attached file included as plaintext by Listar -- -- File: signature.asc -- Desc: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA+Jk1u9npXhj/Ohf8RAtLFAJ9P0+G5TAF4b2jvv2h2qgRfFUe7bQCfRH8K gZswAycNyT3oCCHAfPkqM7M= =CBJt -----END PGP SIGNATURE----- --- Pentru dezabonare, trimiteti mail la [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'. REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
