作者awaysu (阿偉蘇)
看板C_and_CPP
標題[問題] global變數寫在library的問題....
時間Wed Aug 26 23:35:49 2009
請教一下~下面的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
1F:推 VictorTom:你有兩個process同時使用這個lib?? 這樣對各別process來 08/26 23:59
2F:→ VictorTom:說, 那個global都是自己的一份, 它們不會share同一塊記 08/27 00:00
3F:→ VictorTom:憶體空啊; 印出來的address是virtual address, 數字相同 08/27 00:00
4F:→ VictorTom:未必真是同一塊記憶體; 事實上這種情況開再多process它 08/27 00:01
5F:→ VictorTom:們那個var的address應該印出來都一樣. 08/27 00:01
6F:推 VictorTom:這個情形, 也許改成一個process多個thread, 不然就在板 08/27 00:04
7F:→ VictorTom:上search IPC, windows下還可以用寫registry這種鳥招XD 08/27 00:05
8F:→ awaysu:可是...我是在linux@@還有別招嗎^^哈~ 08/27 00:21
9F:→ sunneo:就是ipc啊 08/27 00:30
10F:→ sunneo:包含msg* ,mmap, sck, shm* 08/27 00:31