gpt4 book ai didi

c++ - virtualalloc 的问题

转载 作者:行者123 更新时间:2023-11-27 23:30:15 25 4
gpt4 key购买 nike

virtualpointer=(char*) VirtualAlloc (NULL, (unsigned __int64) (1<<31), MEM_RESERVE, PAGE_READWRITE); 
mainhashbuf=progression=virtualpointer;
VirtualAlloc (progression, (unsigned __int64) (1<<15), MEM_COMMIT, PAGE_READWRITE);
progression=progression+capacity;
*(mainhashbuf+1000)='c';

mainhashbuf、progression 和virtualpointer 是指向char 的指针。我首先预留空间,虚拟指针指向那个空间。然后我将其他 2 个指针设置为等于虚拟指针。然后,我使用 progression(现在也指向保留空间)提交该空间的 (1<<15),然后递增 progression 指针。然后我尝试在 mainhashbuf 应该指向的现在提交的空间中设置一个值,但是我得到一个写入异常。我是否错误地使用了 virtualalloc 和/或对指针的实际工作方式有错误的概念?

最佳答案

VirtualAlloc 尝试分配连续范围的虚拟页面。 1<<31 == 0x80000000,这是默认情况下用户模式进程在 Windows 上的内存量。我严重怀疑对第一个 VirtualAlloc 的调用是否成功。

选择较低的值并重新开始。另外,你为什么要使用 VirtualAlloc?当您不熟悉指针和直接内存管理时,以页面大小为单位提交和保留的概念可能有点令人生畏。先尝试使用 malloc/HeapAlloc?此外,检查 VirtualAlloc 的返回值并确保它们是非 NULL。

关于c++ - virtualalloc 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5892199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com