tak jsem dospěl někam sem:
c - Print out value of stack pointer - Stack Overflow
https://stackoverflow.com/questions/20059673/print-out-value-of-stack-pointer
napadlo mi, že kdyby alokátor seskupoval alokace podle hodnoty stack pointeru v momentě alokace, tak by při prvním volání po návratu z funkce mohl nějak vyhodnotit, které položky může už zahodit - bylo by to překvapivě bezpečné i pro nestandardní způsoby opuštění funkce (longjmp). takovýto "pseudo garbage collection" by šlo iniciovat i mimo volání alokátoru, kdyby bylo potřeba, ale alokátory by ho volaly minimálně pokaždé, když by jim došla pre-alokovaná paměť...
v podstatě by šlo o to vždy označit kus heapu jako asociovaný s aktuální hodotou stack pointeru. přičemž odmazávat by se měla vždy především "poslední předchozí", dle logiky věci.. akorát mi tam hapruje, jak jí odlišit např. od předposlední, která ještě může být platná, pokud se v té poslední nealokovalo nic.
alokátory paměti by pak v podstatě pro běžný život stačily dva, zhruba ekvivalentní prastarým Basicovským levelům "local" a "global" (což mimochodem velmi dobře odpovídá C světu do sebe nevnořovaných funkcí). lokální alokátor by pak podle nejlepších C zvyklostí pro označování privátních a lokálních hodnot mohl začínat podtržítkem...