我想知道在第一個 C 程式中是否可以:
- 為
5記憶體中的值分配并宣告一個int - 列印出變數的地址(例如:
0x7ffee6a98ad8) - 終止
然后在第二個 C 程式中,在第一個完全執行完之后:
- 讀入先前在地址處宣告的資料
0x7ffee6a98ad8 - 列印正確的值
5
這是C中的可能性嗎?
如果是這樣,人們將如何完成這樣一項任務?
如果這很重要,我正在使用 Linux。
uj5u.com熱心網友回復:
曾經是可能的。如果您在其中創建了一個大型 C 程式DOS并分配了一些 RAM,malloc()您實際上可以將該地址保存在某處(如磁盤上)并啟動另一個 C 程式并讀取該記憶體。
我聽說它在深度嵌入式平臺上仍然是可能的,但是在現代多用戶作業系統上,當您從作業系統分配 RAM 時,它首先清除 RAM,因此您看不到它。
問題編輯說Linux。嗯,不,但也是。打開shell行程ptrace(),在shell行程中分配一些記憶體并寫入,下一個程式可以在那里找到它。這一點都不像野生指標游戲,而且真的很棘手。https://techryptic.github.io/2018/04/07/Using-PTRACE-to-Inspect-&-Alter-Memory/窗戶正在關閉;他們開始收緊事情,因此您不能除錯任何行程,只能除錯您自己的子行程,因為他們不想發生sudo災難。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/382568.html
上一篇:與C中的按參考呼叫相混淆
