C语言有 __attribute__((cleanup)) 编译器扩展可以帮助清理超出作用域范围的堆上变量,期间如果要绑定给其他变量持有可以使用宏像 rust 一样 "take":https://github.com/eudev-project/eudev/blob/fc9050ca/src/shared/util.h#L682

---

感谢 HITSZ-OSA 群友 lyc