[問題] global變數寫在library的問題....

看板C_and_CPP作者 (阿偉蘇)時間14年前 (2009/08/26 23:35), 編輯推噓2(208)
留言10則, 3人參與, 最新討論串1/1
請教一下~下面的code我寫成library來呼叫 主要是一個set和get global變數 程式A出呼叫set 1,我用另一個程式B用迴圈get print出來 值沒有被改到,位置也對 [BBB]那行也顯示為1了 但是get卻不是1呢? 有高手可以指導一下嗎?感謝~ int g_nValue = 0; void set_runBrowserValue(int values) { printf("[AAA]%d, 0x%x\n", g_nValue, &g_nValue); g_nValue = values; printf("[BBB]%d, 0x%x\n", g_nValue, &g_nValue); } int get_runBrowserValue() { printf("[CCC]%d, 0x%x\n", g_nValue, &g_nValue); return g_nValue; } ------------------------------------- 結果: [AAA]0, 0x2aade524 [BBB]1, 0x2aade524 [CCC]0, 0x2aade524 [CCC]0, 0x2aade524 [CCC]0, 0x2aade524 [CCC]0, 0x2aade524 [CCC]0, 0x2aade524 -- 時光 美麗動人 如何不捨都要分  如何不捨都要忍 再獨行 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.37.155

08/26 23:59, , 1F
你有兩個process同時使用這個lib?? 這樣對各別process來
08/26 23:59, 1F

08/27 00:00, , 2F
說, 那個global都是自己的一份, 它們不會share同一塊記
08/27 00:00, 2F

08/27 00:00, , 3F
憶體空啊; 印出來的address是virtual address, 數字相同
08/27 00:00, 3F

08/27 00:01, , 4F
未必真是同一塊記憶體; 事實上這種情況開再多process它
08/27 00:01, 4F

08/27 00:01, , 5F
們那個var的address應該印出來都一樣.
08/27 00:01, 5F

08/27 00:04, , 6F
這個情形, 也許改成一個process多個thread, 不然就在板
08/27 00:04, 6F

08/27 00:05, , 7F
上search IPC, windows下還可以用寫registry這種鳥招XD
08/27 00:05, 7F

08/27 00:21, , 8F
可是...我是在linux@@還有別招嗎^^哈~
08/27 00:21, 8F

08/27 00:30, , 9F
就是ipc啊
08/27 00:30, 9F

08/27 00:31, , 10F
包含msg* ,mmap, sck, shm*
08/27 00:31, 10F
文章代碼(AID): #1AbLPOV1 (C_and_CPP)