DLL設定共享變數要注意初始化。

2022-02-20 19:07:48 字數 444 閱讀 6642

#   pragma   data_seg( "shared ") 

變數定義並初始化 

#   pragma   data_seg() 

不能使用動態分配記憶體的型別,比如cstring,vector,list之類。

申明陣列後要初始化,比如 int g_arrblockpath[260] = ;

可在dll的def檔案中 申明共享節

sections

.shareddata read write shared

或者編譯指令

#   pragma   comment(linker, "/section:shared,rws ")

在這裡需要注意的是,比如控制web訪問的spi。要清楚是瀏覽器先載入你的dll,還是你的程式載入,誰先載入,誰負責dll的記憶體分配,如果這個先載入的程式關閉了,前面設定dll中的變數就不會儲存了。

C 指標初始化要注意的地方

1.宣告多個指標的時候 int p1,p2 如上所示,宣告的是建立乙個指標p1和乙個int型的變數p2。而不是宣告的兩個指標。對每個指標變數名,都需要使用乙個 在c 中,int 是一種復合型別,是指向int的指標。2.可以在宣告語句中初始化指標,但是,在這種情況下,被初始化的是指標,而不是它指向的值...

變數初始化

int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...

初始化列表成員變數的初始化

對於以下程式 include using namespace std class base base b 0 a b int get a int get b int main 本想得到的結果是a,b都為90。但是實際結果卻是 4273046 90process returned 0 0x0 exec...