使用像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/