首页 > 解决方案 > `Tcl_Free()` 与 `free()` 有何不同?

问题描述

描述似乎几乎相同。两者之间是否有任何细微差别需要注意?为什么有人会使用一个而不是另一个?这个问题也可能适用于Tcl_Alloc()malloc()

标签: ctcl

解决方案


使用它们是因为 Tcl 支持在 Windows 上使用一个工具链构建,并加载使用不同工具链构建的 DLL。该场景的一个关键特征是,不同的工具链拥有自己的 C 库实现是相当普遍的,这意味着malloc(). 您必须malloc()andfree()与同一个库匹配,否则会遇到一些真正奇怪的故障(崩溃、内存泄漏等)。通过提供Tcl_Allocand Tcl_Free(通常是非常薄的包装器),用户代码可以正确匹配分配和释放.


推荐阅读