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