How would you manage memory allocation in a constrained embedded environment while avoiding fragmentation?