Does nano-malloc support target without unaligned load/store instructions?

Pei-Shiang Hung pshung807@gmail.com
Fri Jan 22 09:14:00 GMT 2016


In nano-mallocr.c,
262     while (r)
263     {
264         int rem = r->size - alloc_size;
265         if (rem >= 0)
266         {
267             if (rem >= MALLOC_MINCHUNK)
268             {
269                 /* Find a chunk that much larger than required size, break
270                 * it into two chunks and return the second one */
271                 r->size = rem;
272                 r = (chunk *)((char *)r + rem);
273                 r->size = alloc_size;
274             }

line 272, it is dangerous to cast 'r' to 'char *', plus 'rem', then
cast back to 'chunk *'. What if the given 'rem' is not a word-aligned
number? It can cause unaligned access exception.  (This does happen in
my application.)

So, does nano-malloc be designed for specific target with unaligned
memory access instructions only(eg. ARM)?


Thanks all.



More information about the Newlib mailing list