使用像WriteProcessMemory这样的内存写入函数和一个指针写入内存之间有什么区别?假设我有这个地址0x12345,我希望该地址的字节为0x15。我可以这样做:

*(unsigned char*)0x12345 = 0x15;

我可以这样做:
unsigned char data = 0x15;
WriteProcessMemory(handle,(LPVOID)pointer, &data, sizeof(data), NULL);

一个相对于另一个的优势是什么?

最佳答案



指针由C++标准指定并受所有实现的支持,而WriteProcessMemory是Windows特有的,不可移植。

两种方式截然不同。分配给取消引用的指针将写入单个字节,而WriteProcessMemory则允许写入任意数量的字节。如果需要从地址开始复制多个字节的标准方法,请参见std::memcpy

另一个主要区别是WriteProcessMemory允许您写入另一个进程的内存。在C++中,没有标准的方法可以做到这一点。进程是操作系统提供的东西,而C++标准未指定如何与它们进行交互。

TL; DR如果您只是简单地写入当前进程本身的内存,则不应使用WriteProcessMemory

关于c++ - C++写内存功能与指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36696409/

10-08 22:49