【发布时间】:2014-05-13 01:52:18
【问题描述】:
我读过几篇文章,建议不要将 int 转换为 void* 或将 void* 转换为 int。我需要设置一个指向特定地址的指针,而我知道的唯一方法是......
#define MEMORY_ALLOC_START_ADDR 0x7E00
void * address = (void*)MEMORY_ALLOC_START_ADDR;
这是安全和“适当的”吗?我只需要转换为 void* ,反之亦然。我能想到分配它的唯一其他方法是使用扩展的内联汇编。我这样问是为了避免以后遇到意想不到的问题。
【问题讨论】:
-
你如何验证你的固定内存地址每次都是正确的。代码看起来不错,但我认为在地址位置使用一些固定数字不是一个好主意。
-
您在做某种微控制器或 SOC 设备编程吗?我怀疑这些文章可能是为“大多数”开发人员的角度而写的,例如,没有考虑到某些没有 MMU 的低级嵌入式系统。也许您可以发布链接以获取上下文?
-
@MantoshKumar 实模式而不是保护模式。我别无选择,只能使用固定地址
-
@AndrewMcDonnell 在切换到保护模式之前,它实际上是一个引导加载程序。我会看看我是否可以再次找到这些链接,但我认为它们指的是用户模式应用程序环境。给我一点时间来搜索我的历史链接
-
@user3141117:如果您知道您的固定地址是有效的,那么您的代码就可以了。
标签: c++ memory void-pointers