[cfe-dev] sizeof (RopeRefCountString)
Ted Kremenek
kremenek at apple.com
Mon Sep 15 14:40:58 PDT 2008
On Sep 7, 2008, at 1:32 AM, Zhongxing Xu wrote:
> Hi,
>
> In RewriteRope.cpp, RewriteRope::MakeRopeString(const char *Start,
> const char *End),
> we calculate the AllocSize by:
>
> unsigned AllocSize = sizeof(RopeRefCountString) - 1 + AllocChunkSize;
>
> I guess here the intention is: sizeof(RopeRefCountString) is 5. But
> gcc says sizeof(RopeRefCountString) is 8. So the actual AllocSize is
> 4087. Should we minus 4 instead of 1 to make the AllocSize 4084?
The "-1" I believe is to accommodate for the field Data[1], which
occupies a single byte:
struct RopeRefCountString {
unsigned RefCount;
char Data[1]; // Variable sized.
void addRef() { ... }
void dropRef() { ... }
};
By subtracting 1, the field "Data" refers to an array with size
AllocChunkSize.
More information about the cfe-dev
mailing list