Matteo34
Nuovo Utente
- Messaggi
- 104
- Reazioni
- 3
- Punteggio
- 45
Ciao a tutti volevo sapere come venivano allocate le struct in memoria.
Dal disassemblato non viene allocato niente quando dichiaro una variabile di tipo "struct prova", ma se inizializzo un campo della struct, viene inizializzato con il valore il contenuto dell'indirizzo di [rbp - 12], quindi viene allocato spazio in memoria, e allora perché quando dichiaro una variabile struct il disassemblato non tiene traccia dell'allocazione:
Quindi le mie domande sono:
Vorrei sapere come viene allocata la memoria di una struct e perché le variabili vengono allocate al contrario rispetto alla dichiarazione(da quel che ho visto dal disassemblato viene allocata prima c poi d e poi a)?
C:
#include<stdio.h>
struct prova{
int a;
int b;
int c;
};
int main(void)
{
struct prova x;
}
Codice:
main:
push rbp
mov rbp, rsp
mov eax, 0
pop rbp
ret
C:
#include<stdio.h>
struct prova{
int a;
int b ;
int c;
};
int main(void)
{
struct prova x;
x.a = 5;
}
Codice:
main:
push rbp
mov rbp, rsp
___________________________________
| mov DWORD PTR [rbp-12], 5|
---------------------------------
mov eax, 0
pop rbp
ret
Vorrei sapere come viene allocata la memoria di una struct e perché le variabili vengono allocate al contrario rispetto alla dichiarazione(da quel che ho visto dal disassemblato viene allocata prima c poi d e poi a)?