我可以使用c ++中的指针分配特定的内存地址吗?

far*_*oft 9 c++ memory pointers

我可以使用c ++中的指针分配特定的内存地址吗?

例如:分配此内存地址25D4C3FA并在其中放入4.

NPE*_*NPE 18

在进程的地址空间中分配特定地址有点棘手且特定于平台.在Unix系统上,mmap()可能是你最接近的.Windows的等价物是VirtualAlloc().当然,由于地址可能已被使用,因此无法保证.

写入特定地址是微不足道的:

char *p = (char*)0x25D4C3FA;
*p = 4;
Run Code Online (Sandbox Code Playgroud)

我认为你有充分的理由想要这样做.

  • 值得一提的是,在Windows上,人们会想要调用`VirtualAlloc`. (4认同)
  • 请注意,指针不是整数类型(与char数据类型不同,它自然是一个8位大小的整数,这就是为什么你可以做char a = 65;),所以你不能直接做这个char*p = 0x25D4C3FA ; ,有一种方法可以写入特定的地址,即通过这样做,char*p =(char*)0x25D4C3FA; (3认同)