2013-03-31 55 views
1

在閱讀下面鏈接的Niklas Frykholm的非常好的博客文章時,我遇到了一些我無法完全理解的東西。線程本地指針初始化

http://bitsquid.blogspot.nl/2012/01/sensible-error-handling-part-1.html

此代碼混淆我:

__THREAD Array<const char *> *_error_context_name; 
__THREAD Array<const char *> *_error_context_data; 

的代碼定義一個線程局部指針字符串數組被用作簡單的堆疊。我不太明白的是如何以跨平臺的方式初始化和銷燬​​陣列?此外如何與DLL的邊界工作?

回答

1

線程本地只有註釋變量在程序中解析到的位置。您需要在使用前分配它,就像其他變量一樣。

爲了理智和表現,您最好在線程啓動時執行此操作。

+0

如果我在一個dll和應用程序都包含的頭文件中聲明瞭這一點,那麼指針在dll中正確解析了嗎?如同,它們是否會指向與主應用程序相同的位置? –