Page 1 sur 1
sizeof ...
Publié : sam. 22/sept./2007 21:47
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

Publié : sam. 22/sept./2007 23:42
par Lna
Cela se calcul par des multiplications.
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'.
'global dim tab.l(10,64,64)'
(10+1) * (64+1) * (64+1) * 4 = 185900 octets.
@ peluche
Publié : dim. 23/sept./2007 10:50
par jerexgrz

ok merci !
Publié : dim. 23/sept./2007 16:31
par Lna
Sur le forum anglophone, il y a le sujet 'SizeOf( Array() )' qui pourrait limiter les calculs.
http://www.purebasic.fr/english/viewtop ... 67&start=0
http://www.purebasic.fr/english/viewtop ... 7&start=15
Cela reste une piste intéressante.
@ peluche
Publié : dim. 23/sept./2007 21:48
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...