Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #106291

Re: Parsing struct memory?

From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c
Subject Re: Parsing struct memory?
Date 2017-03-17 11:16 +1300
Message-ID <ej0h6nFhe9iU8@mid.individual.net> (permalink)
References <62daf505-60e2-4dd5-b2c7-c619085dd548@googlegroups.com> <3c6dac5c-e381-448d-ab63-c6a1029dcd43@googlegroups.com>

Show all headers | View raw


On 03/17/17 09:21 AM, Thiago Adams wrote:
> On Thursday, March 16, 2017 at 4:58:24 PM UTC-3, Thiago Adams wrote:
>> Having some struct;
>>
>> struct {
>>    char c;
>>    void* p;
>>    double d;
>> };
>>
>> Is it possible to parse it just knowing each type?
>> Something similar of var_arg but for structs.
>>
>> char c = arg(pointer, char);
>> void* p = arg(pointer, void*);
>> double d = arg(pointer, double);
>>
>> I was trying https://en.wikipedia.org/wiki/Data_structure_alignment
>>
>> for x86 this is working on visual studio to return the next pointer.
>>
>> #define NEXT(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
>>
>> For x64 not. Changing int for __int64 doesn't work as well.
>
> Something I also would like to understand is how malloc knows the
> alignment if it doesn't know the types? Does it always align with
> pointer size?

malloc is required to return an address "suitable for any object type". 
  C11 added max_align_t as an alias for the largest type used to 
determine this alignment..

> And how about aligned_alloc? Why do we need it?

To allocate a block on some externally specified boundary, greater than 
alignof(max_align_t).  Unix (and no doubt windows) systems already have 
system specific functions for doing this, such as getting a block of 
memory aligned to a page boundary.

-- 
Ian

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-16 12:58 -0700
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-16 13:21 -0700
    Re: Parsing struct memory? Ian Collins <ian-news@hotmail.com> - 2017-03-17 11:16 +1300
      Re: Parsing struct memory? James Kuyper <jameskuyper@verizon.net> - 2017-03-16 22:09 -0400
        Re: Parsing struct memory? Ian Collins <ian-news@hotmail.com> - 2017-03-17 15:23 +1300
        Re: Parsing struct memory? David Brown <david.brown@hesbynett.no> - 2017-03-17 10:11 +0100
          Re: Parsing struct memory? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-03-17 11:35 -0400
    Re: Parsing struct memory? gordonb.7zilv@burditt.org (Gordon Burditt) - 2017-03-16 20:17 -0500
      Re: Parsing struct memory? James Kuyper <jameskuyper@verizon.net> - 2017-03-16 21:56 -0400
  Re: Parsing struct memory? supercat@casperkitty.com - 2017-03-16 13:51 -0700
    Re: Parsing struct memory? Lowell Gilbert <lgusenet@be-well.ilk.org> - 2017-03-16 19:39 -0400
      Re: Parsing struct memory? BartC <bc@freeuk.com> - 2017-03-17 12:16 +0000
      Re: Parsing struct memory? "Peter \"Shaggy\" Haywood" <phaywood@alphalink.com.au> - 2017-03-24 18:06 +1100
        Re: Parsing struct memory? supercat@casperkitty.com - 2017-03-24 14:35 -0700
  Re: Parsing struct memory? Keith Thompson <kst-u@mib.org> - 2017-03-16 19:14 -0700
    Re: Parsing struct memory? scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:45 +0000
  Re: Parsing struct memory? scott@slp53.sl.home (Scott Lurndal) - 2017-03-17 12:41 +0000
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-17 08:17 -0700
  Re: Parsing struct memory? Thiago Adams <thiago.adams@gmail.com> - 2017-03-20 05:07 -0700

csiph-web