温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c - How does `Tcl_Free()` differ from `free()`?
c tcl

c - Tcl_Free()和free()有何不同?

发布于 2020-05-11 16:01:32

这些描述实际上是相同的。两者之间有什么细微差别值得一提吗?为什么有人会使用另一个?对于Tcl_Alloc()也可以提出这个问题malloc()

查看更多

提问者
hkj447
被浏览
28
Donal Fellows 2020-02-21 20:45

之所以使用它们,是因为Tcl支持使用一个工具链在Windows上构建并加载使用其他工具链构建的DLL。这种情况的关键特征是,不同的工具链拥有自己的C库实现是相当普遍的,这意味着的不同实现malloc()必须同一库匹配malloc()free()否则会遇到一些真正的怪异错误(崩溃,内存泄漏等)。通过提供Tcl_AllocTcl_Free(通常是很薄的包装器),用户代码可以正确匹配分配并释放。