This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Memory initialization (not)


On Tuesday 30 September 2008, Jim Dougherty wrote:
> I have a section of memory that I do not want to be initialized with
> zeros when my program starts.
> Is there a way to achieve this?

I think that zero initialization is a consequence of how the process images is 
created. For example:

static char a[65536];

will make the .bss section of size ~65536 bytes which is allocated by the 
dynamic linker by means of mmap() which always provides zeroed-out pages.

So to answer your question: global variables are likely to be always 
initialized with zero (it's out of gcc-s hands). Stack variables, on the 
other hand, are "initialized" with whatever is on the stack, which yeah, if 
you don't explicitly initialize them, could be called uninitialized. :)

-- 
Mihai DonÈu (unices@bitdefender.com)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]