Prototype
E_RTN EMemory::SizeSet( ulonglong ullNewSize,
void *pBlockToFill,
ulonglong ullBlockToFillSize );

Cette fonction redimensionne l'espace de travail à une taille de ullNewSize.

Les octets ajoutés (en cas de redimensionnement à la hausse) ou supprimés (en cas de redimensionnement à la baisse) sont nettoyés à l'aide du bloc d'octets pBlockToFill.

 

Argument

ulonglong ullNewSize

nouvelle taille de l'espace de travail.

void *pBlockToFill

adresse du bloc d'octets à utiliser pour nettoyer les octets ajoutés ou supprimés.

ulonglong ullBlockToFillSize

taille du bloc d'octets à utiliser pour nettoyer les octets ajoutés ou supprimés.

 

 

Retour

E_RTN

voir la section retour de la librairie Eclat.

 

Exemple

Description :

Redimensionnement à la hausse 3 octets avec nettoyage à l'aide du bloc d'octets 0x58 et 0x59 ("XY" en ASCII) puis à la baisse de 6 octets avec nettoyage à l'aide du bloc d'octets 0x4C et 0x4D ("LM" en ASCII) puis, de nouveau, à la baisse de 1 octet avec nettoyage à l'aide du bloc d'octets 0x50 et 0x51 ("PQ" en ASCII) d'un objet EMemory alloué de 4 octets contenant les données 0x41, 0x42, 0x43 et 0x44 ("ABCD" en ASCII).

Code :

EMemory eMem( "ABCD", 4 );

eMem.TraceEx( _T("eMem") );
eMem.SizeSet( 7, "XY", 2 ); // ou eMem.SizeSet( eMem.SizeGet() + 3, "XY", 2 );
eMem.TraceEx( _T("eMem") );
eMem.SizeSet( 1, "LM", 2 ); // ou eMem.SizeSet( eMem.SizeGet() - 6, "LM", 2 );
eMem.TraceEx( _T("eMem") );
eMem.SizeSet( 0, "PQ", 2 ); // ou eMem.SizeSet( eMem.SizeGet() - 1, "PQ", 2 );
eMem.TraceEx( _T("eMem") );

Sortie :

### Object EMemory 'eMem' Trace #
# Object address='0x0012F45C', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='4' byte(s).
# Array data from offset '0x00000000' to offset '0x00000003', length=4 byte(s).
# Offset start 0x00000000 41 42 43 44 .. .. .. .. .. .. .. .. .. .. .. .. [ABCD]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F45C', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='7' byte(s).
# Array data from offset '0x00000000' to offset '0x00000006', length=7 byte(s).
# Offset start 0x00000000 41 42 43 44 58 59 58 .. .. .. .. .. .. .. .. .. [ABCDXYX]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F45C', status='EMemory::ObjectStatus_Enable' (code '3').
# Buffer address='0x00000004', workspace size='1' byte(s).
# Array data from offset '0x00000000' to offset '0x00000000', length=1 byte(s).
# Offset start 0x00000000 41 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. [A]
### End #

### Object EMemory 'eMem' Trace #
# Object address='0x0012F45C', status='EMemory::ObjectStatus_Empty' (code '2').
# Buffer address='0x00000004', workspace size='0' byte(s).
# No data to show from offset '0x00000000' to offset '0x00000000', length=0 byte(s).
### End #

Vue :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
00 01 02 03
  41
A
42
B
43
C
44
D

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
00 01 02 03 04 05 06
  41
A
42
B
43
C
44
D
58
X
59
Y
58
X

Nettoyage avec la valeur 0x59 avant libération :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
00 01 02 03 04 05 06
  41
A
4C
L
4D
M
4C
L
4D
M
4C
L
4D
M

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
00
  41
A
4C
L
4D
M
4C
L
4D
M
4C
L
4D
M

Nettoyage avec la valeur 0x5A avant libération :

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
00
  50
P
4C
L
4D
M
4C
L
4D
M
4C
L
4D
M

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E ..
 
  50
P
4C
L
4D
M
4C
L
4D
M
4C
L
4D
M

 

Voir aussi
E_RTN EMemory::Empty( void );
void EMemory::Free( void );
ulonglong EMemory::SizeGet( void );
E_RTN EMemory::SizeGet( ulonglong *pullSize, ulonglong ullOffset );
E_RTN EMemory::SizeSet( ulonglong ullNewSize );
E_RTN EMemory::SizeSet( ulonglong ullNewSize, uchar ucByteToFill );

 

Minimum
Version 1.0.0