Support C11 free()
With aligned_alloc() in the C11 standard, free() is called to free memory, rather than an equivalent aligned_free().
We should update our library with some logic that can be used to correctly call aligned_free() if free() is used instead.
Maybe we waste a few extra bytes in the aligned space... need a "magic" marker that indicates that this was allocated by aligned_malloc(). If the sentinel matches, then we call the aligned version.
👍 I would be all for this. It is good to mimic how GLIBC behaves. And I don't think the costs outweigh the benefit
I implemented this in https://github.com/embeddedartistry/libmemory/pull/91 but it is mostly just posted for review at this moment as it needs more testing. I tried it out in emu test_0007_smp.exe where I use it to allocate save restore space for AVX registers using XSAVE/XRSTOR and that will fault if memory is not 64-byte aligned, and it appears to work, but I have not done exhaustive testing yet.