On Thu, 2003-01-16 at 15:02, Mihai RUSU wrote: > On Thu, 16 Jan 2003, Dorin Lazar wrote: > > > > Vrei sa afli numarul de elemente al unui array (tratandu-l ca pe un > > > pointer), nu? > > > int *p = (int*)malloc(100*sizeof(int)); > > > nr_elem = (sizeof p / sizeof *p); // imparti marimea totala la > > Adica 1? > > sizeof (p) nu e sizeof(int *)? > > sizeof *p nu e sizeof (int)? > > cel mai des sizeof (int *) == sizeof(int) > ^^^^^^^^^^^^ > > cel mai des asta inseamna numai 32bit, ori sunt destule arhitecturi 64bit > si omul preciza pe undeva cuvantul "portabil" (whatever that means) :) >
Mihai, nu ai inteles ce vrea omu' sa spuna! sizeof p nu va spune niciodata nimic despre zona alocata la adresa p; ci despre tipul lui p, in cazul de fata pointer; de aceea, a imparti sizeof(void*) la sizeof(int) nu va da nici un rezultat interesant pentru problema de fata; ca acest rezultat, neinteresant, mai este si portabil pe deasupra, nu ne incalzeste cu nimic :) nu prea inteleg cum foloseste Alex "formula" asta "magica" pentru a determina memoria alocata de malloc; deci: Alex, sizeof(orice_pointer)==sizeof(void*); georgeb -- George Barbarosie <[EMAIL PROTECTED]> intelinet.ro SRL --- Pentru dezabonare, trimiteti mail la [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'. REGULI, arhive si alte informatii: http://www.lug.ro/mlist/
