首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >virtualalloc问题

virtualalloc问题
EN

Stack Overflow用户
提问于 2011-05-05 11:08:25
回答 1查看 1.7K关注 0票数 0
代码语言:javascript
复制
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和pointers指针是指向char的指针。我首先保留空间,用虚拟指针指向那个空间。然后,我将其他两个指针设置为等于虚拟指针。然后,我使用increment (现在也指向保留空间)提交(1<<15)该空间,然后递增pointer指针。然后,我尝试在现在提交的空间中设置mainhashbuf应该指向的值,但是我得到了一个写入异常。我是否使用了错误的virtualalloc和/或对指针的实际工作方式有错误的概念?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-05 11:14:33

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

选择较低的值,然后重新开始。另外,你为什么要使用VirtualAlloc?当您刚接触指针和直接内存管理时,在页面大小的单元中提交和保留的概念可能有点令人生畏。先尝试使用malloc/HeapAlloc?另外,检查来自VirtualAlloc的返回值,并确保它们不为空。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5892199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档