[問題] 共享函式庫全域變數
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
linux gcc
問題(Question):
很突然地想到,如果我寫一個函式庫,裡面有一個全域變數,
當有兩個以上的程式做存取變更的話,會怎樣
所以自己寫了一個測試程
程式碼(Code):(請善用置底文網頁, 記得排版)
共享函式庫share.c
//內容就只是存放變數
int share = 100;
然後編譯指令
gcc share.c -shared -fpic libshare.so
測試程式碼
#include <stdio.h>
extern int share;
int main(){
printf("address is %x,and value=%d", &share, share);
//share = 101;
//printf("address is %x,and value=%d", &share, share);
getchar();
return 0;
}
補充說明(Supplement):
當我用一樣的程式碼,編出兩個執行檔,只是檔名不同而已
結果share的位址是一樣的
若其中一個把註解拿掉再編
位址就不是同一個
這裡產生的困惑是共享函式庫程式在記憶體是只有一份
函式應當沒什麼問題,但是變數呢
是程式各自保留一份
像java物件一樣
還是說我想測試的語法根本就搞錯了
希望高手出面幫忙解說一下
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.209.145
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1421998957.A.472.html
推
01/23 16:25, , 1F
01/23 16:25, 1F
→
01/23 16:28, , 2F
01/23 16:28, 2F
→
01/23 16:59, , 3F
01/23 16:59, 3F
→
01/23 16:59, , 4F
01/23 16:59, 4F
→
01/23 16:59, , 5F
01/23 16:59, 5F
→
01/23 17:10, , 6F
01/23 17:10, 6F
→
01/26 09:53, , 7F
01/26 09:53, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章