簡體   English   中英

如何代表指向我的地址空間開頭的指針?

[英]How do I represent a pointer to the beginning of my address space?

讓我們考慮一些奇怪的假設嵌入式系統,我需要在其中生成並使用一個指向或可能指向地址空間第一個字節的指針。 即,指針等於零。 不是NULL指針,而是完全有效的零指針,就像其他任何指針一樣,它可能會被取消引用,遞增或被視為數組。 在將NULL指針視為特殊但沒有真正的NULL類型的語言中,我該如何做呢?

在某些罕見的舊機器上,可能會出現整個“ NULL指針的特殊值不同於0的特殊”的情況,但實際上,指向地址0的NULL / 0指針將具有值0,並且實際上在大多數機器上都指向地址0 。

這將是完全可取消引用的,如果有一些內存映射到該區域,則可以在該地址上寫入。

我曾經在與之合作過的嵌入式平台上使用它。 所以我以前將調試器監視點放在地址0上,因為對該區域的所有訪問都是NULL指針取消引用。 以這種方式捕獲了一些錯誤^^

在大多數體系結構中,NULL指針完全沒有什么特別的,它只是地址為0的常規指針。如果您使用的是帶有實際內存的嵌入式系統,則它應該可以正常工作。 唯一的問題是,如果您嘗試檢查指針是否為空值,請不要這樣做。

如果有幫助,則將寄存器定義(指向特定地址的指針)寫入(在我的CodeWarrior副本中)為:

#define REGISTER_XYZ      (*(vuint32 *)(0x40100000))

請注意vuint ,因為它是一個不穩定的位置(可能會在我們的控制范圍之外更改),可能與您無關。

並將0x40100000替換為您選擇的地址,natch。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM