|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Città: Fidenza (Parma)
Messaggi: 160
|
[C++] Dimensione struttura e gestione memoria
Sono al 1° anno di ing. informatica e stò facendo un programmino in c++. Il programma funziona perfettamente, però ho notato delle stranezze nella gestione da parte del compilatore della struct che utilizza il programma.
Codice:
#include <iostream>
using namespace std;
struct prodotto1
{
double prezzo;
char codice[5];
char nome[20];
int quantita;
};
struct prodotto2
{
char codice[5];
char nome[20];
double prezzo;
int quantita;
};
int main()
{
cout<<"Prodotto1: "<<sizeof(prodotto1)<<endl;
cout<<"prodotto2: "<<sizeof(prodotto2)<<endl;
system("pause");
return 0;
}
Quando eseguo questo programma,a video mi viene stampato questo: Prodotto1: 40 prodotto2: 48 Come è possibile che le strutture abbiano dimesioni differenti? Inoltre, la somma delle dimesioni delle variabili di ogni struttura dovrebbe essere 37, non 40 o 48. Questo "scherzo" mi capita con Devcpp, con Visual C++ 2008 Express e con gcc 4.1 a 64 bit, con il gcc 4.1 a 32 bit la dimesione di entrambe le strutture è 40 byte.
__________________
Q6600; Biostar P43D2A7; 2x2Gb DDR2 800 (5-5-5-15); 500 Gb + 1000 Gb Hd Sata2; 9800GTX+ 512 Mb ; X-Fi Xtreme Music. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6618
|
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2006
Città: Fidenza (Parma)
Messaggi: 160
|
Grazie per le risposte! D'ora in poi userò un occhio di riguardo in più quando creerò una struttura!
__________________
Q6600; Biostar P43D2A7; 2x2Gb DDR2 800 (5-5-5-15); 500 Gb + 1000 Gb Hd Sata2; 9800GTX+ 512 Mb ; X-Fi Xtreme Music. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Detto in parole poverissime:
la struct viene sempre allineata secondo il primo membro (in questo caso il double). |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:33.



















