Click here to Skip to main content
15,919,931 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralReading Windows data into unix Pin
Anonymous20-Nov-03 9:03
Anonymous20-Nov-03 9:03 
GeneralRe: Reading Windows data into unix Pin
Antti Keskinen20-Nov-03 9:33
Antti Keskinen20-Nov-03 9:33 
GeneralRe: Reading Windows data into unix Pin
JWood20-Nov-03 9:37
JWood20-Nov-03 9:37 
GeneralRe: Reading Windows data into unix Pin
Johnny ²20-Nov-03 11:12
Johnny ²20-Nov-03 11:12 
General__in64 and DWORD strange size Pin
Anonymous20-Nov-03 8:34
Anonymous20-Nov-03 8:34 
GeneralAlignment Pin
Vancouver20-Nov-03 8:53
Vancouver20-Nov-03 8:53 
GeneralRe: __in64 and DWORD strange size Pin
JWood20-Nov-03 8:54
JWood20-Nov-03 8:54 
GeneralRe: __in64 and DWORD strange size Pin
cmk20-Nov-03 9:01
cmk20-Nov-03 9:01 
The whole may be greater than the sum of its parts.

The compiler is trying to optimize the size and alignment of the structure as a whole, as well as the members within. In your case the compiler is taking the larget member (__int64), making the structure size a multiple if it (8) and making sure the members are memory aligned for thier respective type.

To get around this 'pack' your structure :
e.g.
#pragma pack(push, 1)
typedef  struct {
    __int64  pa;
    DWORD    pb;
}  SA;
#pragma pack(pop)


However, remember there is a reason that the compiler is aligning the structure and its members (not going to get into it here). You will generally only pack structures (or classes) that mirror data on disk or in a stream (where the reader and writer may use different alignment/packing rules), or if you are creating massive instances of the structure and you want to save the memory (have yet to see a case where this reason is justified though).


...cmk

Save the whales - collect the whole set
Generalcmk is right Pin
Vancouver20-Nov-03 9:11
Vancouver20-Nov-03 9:11 
GeneralText does not appear on colored buttons Pin
Vancouver20-Nov-03 8:13
Vancouver20-Nov-03 8:13 
GeneralSolution Pin
Vancouver20-Nov-03 10:25
Vancouver20-Nov-03 10:25 
GeneralRe: Solution Pin
cmk20-Nov-03 16:13
cmk20-Nov-03 16:13 
GeneralFor cmk Pin
Vancouver21-Nov-03 9:09
Vancouver21-Nov-03 9:09 
GeneralRe: For cmk - back to Vancouver Pin
cmk21-Nov-03 12:02
cmk21-Nov-03 12:02 
GeneralDirectshow and painting Pin
georgiek5020-Nov-03 6:31
georgiek5020-Nov-03 6:31 
Generalproblem with if statement Pin
si_6920-Nov-03 4:43
si_6920-Nov-03 4:43 
GeneralRe: problem with if statement Pin
LittleYellowBird20-Nov-03 5:02
LittleYellowBird20-Nov-03 5:02 
GeneralRe: problem with if statement Pin
si_6920-Nov-03 5:47
si_6920-Nov-03 5:47 
GeneralRe: problem with if statement Pin
Ian Darling20-Nov-03 6:01
Ian Darling20-Nov-03 6:01 
GeneralRe: problem with if statement Pin
Big Art20-Nov-03 5:56
Big Art20-Nov-03 5:56 
GeneralRe: problem with if statement Pin
TFrancis20-Nov-03 6:07
TFrancis20-Nov-03 6:07 
GeneralRe: problem with if statement Pin
Michael Dunn20-Nov-03 9:55
sitebuilderMichael Dunn20-Nov-03 9:55 
GeneralRe: problem with if statement Pin
Stye21-Nov-03 17:01
Stye21-Nov-03 17:01 
GeneralBrowse CD option Pin
Anonymous20-Nov-03 3:50
Anonymous20-Nov-03 3:50 
GeneralRe: Browse CD option Pin
Peter Molnar20-Nov-03 13:52
Peter Molnar20-Nov-03 13:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.