我需要在跨平台项目中使用线程本地存储。在 *IX 下,我使用 pthreads 并且可以避免内存泄漏,这要归功于作为第二个参数传递给 的好的析构函数指针pthread_key_create
,但在 WindowsTlsAlloc
中没有这样的东西。我也找不到在线程退出时调用任何函数的一般位置(否则我会自制一些在退出时调用的函数指针列表)。
就目前而言,我基本上有一种情况,为了实际使用线程本地存储,我需要在堆上分配我自己的空间并将指针传递给TlsSetValue
,但是如果线程退出......我无法确保内存被释放(除了有人在线程函数末尾显式调用TlsGetValue
和delete
/// etc free
。HeapFree
有人知道更好的方法吗?