sizeof ...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

sizeof ...

Message par jerexgrz »

Sizeof permet de connaitre la taille en octet d'une variable.
a.l
debug sizeof(a)

par contre, j'aimerais connaitre la taille de mon tableau ???
global dim tab.l(10,64,64)

anyone have an idea :?:
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

Cela se calcul par des multiplications. 8)

Il ne faut pas oublier de compter l'élément 0 en rajoutant 1 et de multiplier le tout par 4 pour le format '.l'. 8O

'global dim tab.l(10,64,64)'

(10+1) * (64+1) * (64+1) * 4 = 185900 octets. :idea:

@ peluche
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

:lol: ok merci !
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

Sur le forum anglophone, il y a le sujet 'SizeOf( Array() )' qui pourrait limiter les calculs. 8O

http://www.purebasic.fr/english/viewtop ... 67&start=0
http://www.purebasic.fr/english/viewtop ... 7&start=15

Cela reste une piste intéressante. 8)

@ peluche
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Merci pour ta recherche Lna!

Code : Tout sélectionner

Procedure.l ArrayMemorySize(*Array) 
  !sub [p.p_Array], dword 20
  !push dword [p.p_Array] 
  !push dword 0 
  !push dword [PB_MemoryBase] 
  !call _HeapSize@12 
  ProcedureReturn 
  HeapSize_(0, 0, 0) ; make sure, _HeapSize@12 is defined 
EndProcedure 

Procedure ArraySize(*Array) 
  ProcedureReturn PeekL(*Array-8) 
EndProcedure 


Dim Array.B(511)

Debug "Taille en octets : " + Str(ArrayMemorySize(@Array() ) )
Debug "Quantité d'éléments : " + Str(ArraySize(@Array() ) )
Par contre, les tableaux de chaînes demandent hélas un tout petit peu plus de calculs...
Répondre