memory-layout

Variable sized class - C++

I've seen a class which is a class which is defined like this.. class StringChild : public StringBase { public: //some non-virtual functions static StringChild* CreateMe(int size); private: unsigned char iBuf[1]; }; The static factory function has the following implementation.. return new(malloc(__builtin_offsetof...

incorrect members order in a C# structure

Hello, I have a TCP Client,which puts a packet in a structure using System.Runtime.InteropServices; [StructLayoutAttribute(LayoutKind.Sequential)] public struct tPacket_5000_E { public Int16 size; public Int16 opcode; public byte securityCount; public byte securityCRC; public byte flag; [MarshalAsAttribute(Unma...

What is the memory layout of a Delphi dynamic array of dynamic array of X?

I am trying to call a procedure in a Delphi DLL from C#. The procedure expects the caller to preallocate and input an array of array of TSomeRecord, of which it will then manipulate the TSomeRecord elements as a means of returning results. So, I need to hand-craft Delphi dynamic arrays of arrays of X. Now, I have found here that a dynami...

C struct memory layout?

I have C# background. Very newbie to low level language like C. In C#, struct's memory laid out by compiler by default. Compiler can re-order data fields or pads additional bits between fields implicitly. So I had to specify some special attribute to override this behavior for exact layout. As I know, C does not re-order or align memor...

Why do virtual memory addresses for linux binaries start at 0x8048000?

Disassembling an ELF binary on a Ubuntu x86 system I couldn't help but notice that the code(.text) section starts from the virtual address 0x8048000 and all lower memory addresses seem to be unused. This seems to be rather wasteful and all Google turns up is either folklore involving STACK_TOP or protection against null-pointer derefer...

Print layout of C++ object with g++ compiler

Is there a way to print the layout of a C++ object using the g++ compiler or any other means. A simplified example (assuming int takes 4 bytes) class A{ int a; }; class B:public A{ int b; } so the output would be A- 0 4 + a + B- 0 4 8 + A.a + b + It would be useful to understand the layout of objects (...