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/


Raspunde prin e-mail lui