Re: Issues with memcpy

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

 



At least in past days, g++ supported a "packed" keyword. If you really, really want the struct to occupy exactly 9 bytes, this could be a way to accomplish that.

I generally wouldn't worry about that for performance reasons, though, as that wouldn't reduce the nubmer of *words* of data that get copied.

The only good reasons I can think of for using the "packed" structure are:
- You're using the struct to overlay a buffer that's used in network
  communications, so you want exactl control over which bytes of the buffer
  correspond to particular members of the struct, or

- You're going to have a huge number of instances of this struct in memory, and
  you really need that 25% savings in memory use.  (Although if you allocate
  heap memory for individually for each instance of the struct, you still might
  not get any savings in heap use.  IIRC, the heap is likely to allocate a
  bigger chunk of memory than just 9 bytes, when you ask for a 9-byte
  allocation.)

Brian Budge wrote:
You could reorganize your struct so that the char is on the end.  Then
you could just do the memcpy with 9 bytes.  However, I have a feeling
that doing the full 12 byte copy may be faster... like others have
said, it depends on your achitecture.

  Brian

On 4/27/05, Javier Valencia <jvalencia@xxxxxxxxx> wrote:

Thanks John, it was the problem, uninitialized struct.

To all: i understand now whats happening about aligned stuff, thanks!!

So what is the best way to copy a struct to a byte array without copying
empty aligned spaces?
I'm doing now the ugly way, just pointing to each field each time and
copying to the buffer.

It's for transmition purposes.




-- Christian Convey Computer Scientist, Naval Undersea Warfare Center Newport, RI


[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