我正在尝试学习如何使用 VirtualAlloc 和 VirtualFree 函数。
我已经阅读了 msdn 关于VirtualAlloc和VirtualFree的参考资料,并了解了如何使用它们(至少在基本层面上)。
问题是我找不到如何将值放入分配的内存中。
我试图编写一个简单的 c++ 应用程序:
1. 使用 VirtualAlloc 保留 3000 字节的内存。
2. 提交保留的内存。
3. 将 char 类型的值放入提交的内存中。
4. 使用 VirtualFree 释放内存。
#include<windows.h>
int main() {
LPVOID ptr = VirtualAlloc(NULL,3000,MEM_RESERVE,PAGE_READWRITE); //reserving memory
ptr = VirtualAlloc(ptr,3000,MEM_COMMIT,PAGE_READWRITE); //commiting memory
int i;
for(i=0; i<3000; i++) {
ptr[i]= 'a'; //failed attempt to fill the allocated memory with 'a'
}
VirtualFree(ptr, 0, MEM_RELEASE); //releasing memory
return 0;
}
当然这给出了:
[Warning] pointer of type 'void *' used in arithmetic [-Wpointer-arith].
[Error] 'LPVOID {aka void*}' is not a pointer-to-object type.
所以我的问题是如何正确地将值放入 C++ 中 VirtualAlloc 分配的内存中?
我也找到了这个例子,但它没有编译,我无法让它工作。