исходный текст программы, использующий динамические стековые массивы
Естественно, о вызове stack_free
программист может забыть (и ведь наверняка забудет!), поэтому лучше выделять память так, чтобы при выходе из функции она освобождалась автоматически.
Ниже приведен исходный текст макроса auto_alloc, который именно так и работает:
#define auto_alloc(p,n) {__asm{add n,20h};\
__asm{mov eax,esp};\
__asm{sub esp,n};\
__asm{mov p,esp};\
__asm{push 20h};\
__asm{push eax};\
__asm{mov eax,p};\
__asm{push eax};\
__asm{call memcpy};\
__asm{add esp,0Ch};\
__asm{add p,20h};}