[爆卦]全域變數缺點是什麼?優點缺點精華區懶人包

為什麼這篇全域變數缺點鄉民發文收入到精華區:因為在全域變數缺點這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者woodpeaker (woodpeaker)看板C_and_CPP標題[問題] 用全域變數不好...


不知道為什麼我C++的老師規定

我們寫程式不能用全域變數

難道用全域變數比較差嗎?

麻煩各位版友回答一下吧 感謝!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.175.106
adrianshum:全域變數有它合用的地方, 但初學者肯定會誤用. 你就當 05/26 17:57
adrianshum: global var is evil 吧, 對初學者而言比較好 05/26 17:57
zlw:存活時間太久,記憶體空間跟變數名稱都一直佔著 05/26 18:26
james732:我覺得它跟goto是同等級的利器 XDDD 05/26 18:50
james732:Linux kernel 裡有很多全域變數 也有很多 goto XD 05/26 18:54
VictorTom:寫code不是玩機戰啊~~地圖兵器不要亂放....XD 05/26 18:54
chchwy:濫用全域變數會讓程式快速接近崩潰邊緣....... 05/26 19:24
Ebergies:還好吧, 蠻好用的啊 05/26 19:38
ianfang:debug不易 很容易不知道是誰改了他 因為隨便就能改 05/26 19:42
OgamiIchiro:大型程式用太多global variable可能會造成memory不足 05/26 19:46
OgamiIchiro:而且練習memory的控管很重要 05/26 19:47
stonehomelaa:會讓function之間相依性太高 如果要修改 會改到死 05/26 19:49
varg:怕手殘改到而已 小程式當然無所謂 05/26 19:50
QQ29:可以請大家舉例說什麼情況 就不該使用global嗎? 05/26 20:11
QQ29:像有些就覺得不寫成global好像就不會寫了..... 05/26 20:11
stonehomelaa:樓上說說看非用global variable的情況吧 05/26 20:18
legnaleurc:signal handler 的 flag 05/26 22:03
softwind:跨檔案的變數 global吧 cin/cout... 物件算嗎? 05/26 22:29
softwind:全域變數和goto 都很好用! 05/26 22:30
tinlans:global var 最大的危險就是會存取到上一次迭代留下的遺跡 05/26 23:31
tinlans:,所以必須要特別花時間留意適時的 reset 它們的值。 05/26 23:32
tinlans:另外它可能會引發效能問題,某些平台全域變數存取很慢。 05/26 23:34
softwind:global var 的最大危險 是我覺得不得不的解法 05/27 00:15
legnaleurc:scope 太大 ... 難 debug 05/27 01:14
wowtiger:global 最容易知道被誰改吧 ... 05/27 01:27
wowtiger:而且 global 又不一定不好 只要知道 4k memory block 05/27 01:28
wowtiger:反而可以有效節省空間 05/27 01:28
TroyLee:"global 最容易知道被誰改吧" 除非整個程式碼你都看的到 05/27 02:51
OgamiIchiro:local variable如果運算錯誤 可以很明顯知道是該 05/27 02:57
OgamiIchiro:function內部的問題 但如果是global variable 05/27 02:57
OgamiIchiro:尤其是那種非常多function都會去access的 05/27 02:58
OgamiIchiro:當你一個program花1s run完 可能就被改了數百次以上 05/27 02:59
OgamiIchiro:遇到這種情形就很難找出到底從哪裡開始錯的 05/27 02:59
OgamiIchiro:如果是遇到更棘手的情形: 該variable中間有幾次的 05/27 03:01
OgamiIchiro:算出錯 但是後來又因為一些特例變成對的 05/27 03:01
OgamiIchiro:結果造成debug 沒de出來 很可能會在demo的時候就 05/27 03:02
OgamiIchiro:出紕漏 05/27 03:02
Ebergies:global 最不容易知道是誰改 xD 05/27 09:55
gozha:為了效能勉強可接受..但是養成習慣就慘了 05/27 10:11
tinlans:global variable 的存取效能在某些平台上很差喔。 05/27 11:27
tinlans:load/store 架構,有 GOT 的通常會有兩次 memory access。 05/27 11:29
wowtiger:恩... 有玩過可以下 memory breakpoints 應該知道吧 05/27 23:22
meltice:struct的member被其他pointer指來指去 05/28 09:51
meltice:這樣會比global更清楚被誰改的麼? 05/28 09:52
meltice:乾脆不要用pointer好了 pointer是很危險的東西 05/28 09:52

你可能也想看看

搜尋相關網站