連結器工具警告 LNK4092
共用可寫入區段 'section' 包含重新配置;映像可能無法正確執行
每當您有共用區段警告您有潛在嚴重問題時,連結器就會發出此警告。
在多個進程之間共享數據的其中一種方式是將區段標示為「共用」。不過,將區段標示為共用可能會導致問題。 例如,您有一個 DLL,其中包含共用資料區段中類似如下的宣告:
int var = 1;
int *pvar = &var;
鏈接器無法解析 pvar
,因為它的值取決於 DLL 在記憶體中載入的位置,因此它會將重新配置記錄放在 DLL 中。 當 DLL 載入記憶體時,可以解析並pvar
指派 的var
位址。 如果另一個進程載入相同的 DLL,但無法以相同位址載入它,則第二個進程的位址 var
重新配置將會更新,而第一個進程的位址空間會指向錯誤的位址。