C# - struct allocata nello stack

di il
1 risposte

C# - struct allocata nello stack

StructCurrencyStruct
{
public long Dollars;
public byte Cents;
}

perché il sizeof di "CurrencyStruct" dà come risultato 16 byte anziché 12? (long = 8 byte, + byte = 1 byte di cui l'allineamento a DWORD alloca cmq a 4 byte)

Grazie anticipatamente per la risposta.

1 Risposte

  • Re: C# - struct allocata nello stack

    La risposta è molto semplice; il tuo ragionamento sarebbe corretto se avessi dichiarato due variabili indipendenti ma nel tuo codice hai definito una struttura ciò implica che il frmk deve trattarlo in maniera "particolare", ovvero deve aver byte a disposizione per capire che si tratta di una struttura;
    i tipi strutturati sono supportati da quasi tutti i linguaggi e la loro dimensione in termini di byte necessari per la relativa allocazione varia in funzione di questi (byte necessari per gli item della struttura (data dalla somma dei byte necessari a gestire i singoli item), + bute necessari per gestire la struttura); nel nostro caso i byte aggiuntivi sono quelli necessari a dot net per capire che il tipo di dato con cui stai lavorando è una struttura (ed è in dipendenza del frmk ma non del linguaggio con cui sviluppi data l'interoperabilità della piattaforma di sviluppo); infine tieni conto che il frmk consente di dichiarare strutture di codice (routine) all'interno di una struttura le quali supportano addirittura le main (quasi come se si trattasse di classi).
Devi accedere o registrarti per scrivere nel forum
1 risposte