[Top][All Lists]

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

Re: [lwip-users] What is the memory alignment of the pointer returned by

Subject: Re: [lwip-users] What is the memory alignment of the pointer returned by mem alloc() in mem.c?
Date: Mon, 27 May 2019 13:49:17 +0800

In your lwipopts.h what have you set for MEM_ALIGNMENT ?

// MEM_ALIGNMENT: should be set to the alignment of the CPU for which lwIP is compiled.
#define MEM_ALIGNMENT           4


On 27/05/2019 04:17, address@hidden wrote:
Could anyone give me some advice?

I recently use mem_alloc() to allocate a structure memory which have a int64 member. However, mem_alloc() returns a memory poniter which is 4 byte aligned which cause a memory unaligned fault.
The code is as follows,

ifp=mem_alloc(sizeof(structure interface));

The structure intrface has a member flags which is int64. The size of structure interface is 112 which is a multiple of 8 while the address returned is 0x720ef324 which is not 8 byte aligned. So when I want to access ifp->flags, an unaligned fault will be triggered.

Could any give some hint?
Best regards,


On 05/25/2019 22:19, yanhc519 wrote:
Hi all.

What is the memory alignment of the pointer returned by mem_alloc() in mem.c?
Since the only argument of mem_alloc() is size, so what alignment will mem_alloc() choose?

In http://man7.org/linux/man-pages/man3/malloc.3.html, it says "The malloc() and calloc() functions return a pointer to the allocated memory, which is suitably aligned for any built-in type."
Since the largest type is double or int64 which are 8 bytes, so I guess malloc() in linux will choose alignment of 8 bytes.

Is this guess also applied to mem_alloc() in LwIP? 
That is, does mem_alloc() in LwIP also choose alignment of 8 bytes?

Best regard,


lwip-users mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]