寫程式弄清楚哪些是語言層次的事物是必要的
為什麼說C語言的const只是語言層次
很簡單,因為不管怎麼下
變數配置就是在RAM上面
RAM的硬體特性就是讓人隨便的讀寫
除非有辦法把他配置到ROM,這不是不可能
嵌入式系統極可能有這樣的配置
另外就是靠作業系統和Loader的幫忙囉
所以只要語言有漏洞就可以讓你破解
事實上可以靠pointer的轉型 (cast)
雖然程式照樣能編過
但是 compiler是會提出警告的
因為程式開發人員正嘗試著放鬆權限
若想讓不要發出警告
有一種type可以完全避開,叫作void*
能夠接受任何轉型,任何type也可以轉成此 type
const int i = 2; i = 3; // error *(int*)&i = 3; // warning *(int*)(void*)&i = 3; // nothing |
但後果就自負啦
文章標籤
全站熱搜
留言列表