RE: Issues with memcpy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>I'm a bit confused, why is using 12 bytes if it's a char + 2 int's?
Because the compiler likes to keep members of the struct aligned I think.

As for the strange output - you've created the struct on the 
stack, so you get your piece of memory but importantly it's uninitialised.
So you end up with whatever was lying around on the stack - ie junk.
If 0xfffffffa is confusing this is the represention of a negative
number - but it is still only a byte. Maybe you just need to bzero
the struct or change the declaration: t_st mystruct = {0};


-----Original Message-----
From: Javier Valencia [mailto:jvalencia@xxxxxxxxx]
Sent: 27 April 2005 14:04
To: gcc-help@xxxxxxxxxxx
Subject: Re: Issues with memcpy


Brian Budge wrote:

>Could be my imagination, but are you assuming the size of your struct
>is 9 bytes?  This is most likely a false assumption.  Try using
>sizeof(t_st) instead.  Likely it's 12 bytes.
>
>  Brian
>
>  
>

I'm a bit confused, why is using 12 bytes if it's a char + 2 int's?
I think i'm not understanding something.

I've redone using sizeof(t_st) in all points and this is the output:

tigre@enigma collector $ gcc pro.c
tigre@enigma collector $ ./a.out
5 0 0 0 5 0 0 0 5 0 0 0

tigre@enigma collector $ gcc pro2.c
tigre@enigma collector $ ./a.out
5 fffffffa ffffffff ffffffbf 5 0 0 0 5 0 0 0
5 fffffffa ffffffff ffffffbf 5 0 0 0 5 0 0 0

It have changed a bit, but strange things continue happening in pro2.c


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux