2016-02-23 223 views
-3

我有一個打開的c程序,隨機var a = 20存儲在地址中。比方說1000.我希望我的c#程序能夠讀取此地址(1000)的值。所以在我的C#程序中顯示值20。我已經有了地址,但我不知道如何查看此地址值,有什麼幫助?用指針指向某個地址c#

int *ptr = (int *) 0x67a9; 
*ptr = 0xaa55; 

我發現這c代碼認爲它會有所幫助。

我使用Visual Studio 2015年

+1

谷歌搜索'在C#中使用指針' – MethodMan

+2

在C#中的整個範例是非常不同於C ...您可能想了解更多關於基本在C#中的第一在翻譯代碼之前。 「指針」很少使用......大多數情況下,我們不使用「指針」來顯示「值」 – Ian

+0

那麼我們大部分時間使用什麼呢? –

回答

2

所以,你想你的C存儲在內存中的地址值1000,你想你的C#程序能夠讀取內存地址1000並看到相同的價值呢?

不幸的是(對你而言)它並不是那樣工作的 - 每個exe都有自己的地址空間,所以每個地址1000的地址映射到不同的物理地址,你不應該在那水平。

有幾種進程間通信(IPC)方法,你可以看看,以達到你想要的東西(如共享內存)

編輯 大衛·赫弗南正確地指出,ReadProcessMemory在評論確實允許你映射的從一個進程到另一個進程的內存區域。我必須承認我不知道!仍然存在的問題是,您不能只使用內存地址1000 - 您不知何故必須從一方到另一方獲取有效地址,所以我不確定它對一般情況有多大用處。 這可能會給你一些更多的提示:sharing memory between two applications

+0

這很有道理,但如果我得到進程句柄,地址1000將兩個相同?同樣謝謝,我會閱讀所有關於它的信息 –

+0

句柄通常只是一個ID,而不是一個地址。再次。這兩個進程都有自己的地址空間。即使您使用共享內存,也可以將同一個塊映射到第一個進程中的地址1000和第二個地址中的地址2020。 – John3136

+0

這兩個進程的地址都是1000(以及x86的任何地址0-2^32),但不能保證任何一個進程都將內存映射到該地址空間的一部分,並且有可能爲不同的地址提供相同的信息流程基本上是0. –