Здраствуйте! Как в C (именно в C!!!) эмулировать деструкторы. То есть, есть нечто, хто создаётся на стеке. После выхода из скопа надо автоматически вызвать callback.
Написать свои функции выделения/освобождения памяти, в который указатели на выделенные участки памяти будут также сохраняться в каком-либо статическом списке. Написать также две функции enter_scope() и leave_scope(), первая из которых будет ложить в стек 0, а вторая - освобождать из стека все значения до первого 0-я.
Сразу после входа в блок вызываем enter_scope(), перед выходом - leave_scope().
Полностью автоматически - пожалуй, никак. Какой бы способ сборки мусора ни использовался, надо в явном виде указывать окончание работы очередного блока кода (чтоб мусор можно было собрать).