What if it worked like a FAT-less RAM file chain, rather than a disc? It would be basically a linked list. New additions always go on the end, so there's no need to search for space, "best fit" or otherwise, and block boundaries disappear. If a buffer that's not at the end gets deleted, later-created ones get scooted up to close up the space, taking care of the garbage-collection and defragmentation issues already discussed in the other topic.
What are the typical applications of these memory allocations? What applications would need the allocation (creation) and freeing (deletion) to be fast? The ones I'm thinking of don't need to get created and destroyed particularly fast, like tens of thousands times per second; but when you do need the speed, it will probably be for the one at the end of the chain, which can be deleted without moving other buffers anyway. Moving might be the only thing that takes much time.
Otherwise, what negative implications would there be?
I imagine the calling program to give "alloc" the address of the calling program's variable which will point to the buffer. "alloc" puts this variable's address in the buffer's header / housekeeping bytes so the buffer manager knows where to update the variable if it moves the buffer after deleting an earlier-created one.
There's no need for "blocks," since you can get the exact number of bytes requested (plus housekeeping bytes). The collection of buffers does not take any more room than it needs to, unless you assign a little extra for each so they can handle a degree of resizing without having to move all the following buffers every time. I imagine the re-sizing need is rare, unlike the situation with files.