- 104
- 3
- CPU
- i5-10500 3.2Ghz
- Dissipatore
- Non specificato
- Scheda Madre
- Non specificata
- HDD
- M.2 251GB e M.2 500GB
- RAM
- 16GB DDR4 2666mhz
- GPU
- Grafica Intel® UHD 630
- Audio
- Non specificata
- Monitor
- 1920x1080 27"
- PSU
- Non specificato
- Case
- Non specificato
- Periferiche
- Nono specificato
- Net
- Eolo
- OS
- Ubuntu
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)?