我们可以为给定的内存位置分配值吗?

Gop*_*ath 11 c memory pointers

我想将一些值(比如2345)分配给一个内存位置(比如说0X12AED567).可以这样做吗?

换句话说,我该如何实现以下功能?

void AssignValToPointer(uint32_t pointer, int value)
{

}
Run Code Online (Sandbox Code Playgroud)

rob*_*off 16

你提出这个问题的事实表明你已经过了头脑.但是你走了:

*(int *)0x12AED567 = 2345;
Run Code Online (Sandbox Code Playgroud)

  • 我对Gopinath的环境没有做出任何假设.我的代码是一种分配给硬编码内存地址的方法.分配的效果(例如成功,无操作,SIGBUS)取决于系统,但如果他需要,我会让Gopinath询问他们. (2认同)

jwe*_*ich 5

答案取决于一些因素。你的程序在操作系统上运行吗?如果是,操作系统是否实现内存分段

如果您对这两个问题的回答都是“是”,则尝试访问未映射或无权写入的内存区域将导致内存访问冲突(SIGSEGV在基于 POSIX 的系统上)。为此,您必须使用系统特定函数来映射包含该确切地址的内存区域,然后再尝试访问它。