Можно ли реализовать RAII в чистом C?
Я предполагаю, что это невозможно каким-либо вменяемым способом, но, возможно, возможно ли это с помощью какого-то подвоха. В голову приходит перегрузка стандартной функции free
или, возможно, перезапись адреса возврата в стеке, чтобы при возврате функции вызывать какую-то другую функцию, которая каким-то образом освобождает ресурсы? Или, может быть, с каким-нибудь трюком setjmp / longjmp?
Это чисто академический интерес, и я не собираюсь на самом деле писать такой непереносимый и сумасшедший код, но мне интересно, возможно ли это вообще.