From: Hans-Bernhard Broeker Newsgroups: alt.comp.lang.learn.c-c++,comp.lang.c++,comp.os.msdos.djgpp Subject: Re: Holes in structure Followup-To: alt.comp.lang.learn.c-c++ Date: 6 Nov 2001 13:20:13 GMT Organization: Aachen University of Technology (RWTH) Lines: 43 Message-ID: <9s8o2d$nl6$1@nets3.rz.RWTH-Aachen.DE> References: <3BE7D280 DOT C1732E58 AT bigfoot DOT com> NNTP-Posting-Host: acp3bf.physik.rwth-aachen.de X-Trace: nets3.rz.RWTH-Aachen.DE 1005052813 24230 137.226.32.75 (6 Nov 2001 13:20:13 GMT) X-Complaints-To: abuse AT rwth-aachen DOT de NNTP-Posting-Date: 6 Nov 2001 13:20:13 GMT Originator: broeker@ To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com [Crossposted without a proper F'up2 --- I restricted it to one group as it should be] In comp.os.msdos.djgpp Alex Vinokur wrote: > Here is some program that detects holes in structure. A rather useless exercise, that is. You don't need to know or detect this kind of information. If you think you have to, you should re-think the arguments that brought you to this conlusion. At least one of them is flawed. > Its output is not perfectly clear to me. [...] > Questions. > 1. struct type0 (empty) : > Why is 'sizeof' = 1? Why not? An empty struct is a completely useless thing --- what on earth would you care about its size for? > 2. struct type1 : > Why is not 'Diff' (between 'sizeof' and 'All items sum') > equal 'All holes sum' ? The thing you're investigating here is not called "hole"s, that's why. It's called "padding", and that included possible padding at the *end* of a structure, after the last element. That's exactcly where the remaining three bytes of "holes" are, in this particular case. > 3. struct type0 and type1 : > Why is not ('Diff' - 'All holes sum') the same value for > type0 and type1. > Note. type0 : 'Diff' - 'All holes sum' = 1 - 0 = 1 > type1 : 'Diff' - 'All holes sum' = 9 - 6 = 3 Why should they be the same? -- Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de) Even if all the snow were burnt, ashes would remain.