这些描述实际上是相同的。两者之间有什么细微差别值得一提吗?为什么有人会使用另一个?对于Tcl_Alloc()
和也可以提出这个问题malloc()
。
之所以使用它们,是因为Tcl支持使用一个工具链在Windows上构建并加载使用其他工具链构建的DLL。这种情况的关键特征是,不同的工具链拥有自己的C库实现是相当普遍的,这意味着的不同实现malloc()
。您必须与同一库匹配malloc()
,free()
否则会遇到一些真正的怪异错误(崩溃,内存泄漏等)。通过提供Tcl_Alloc
和Tcl_Free
(通常是很薄的包装器),用户代码可以正确匹配分配并释放。