各位好!
我用virtualalloc函数分配内存时,出现‘存储空间不足,无法处理此命令’异常提示,如何处理?
是不是系统出现内存泄漏,可是我的内存有2G,才用了2、3百M,而且虚拟内存也设了1G。
我用virtualalloc函数分配内存时,出现‘存储空间不足,无法处理此命令’异常提示,如何处理?
是不是系统出现内存泄漏,可是我的内存有2G,才用了2、3百M,而且虚拟内存也设了1G。
解决方案 »
- [请教]VNC源码问题?
- 如何在列表控件中填写数据?
- 求助:谁能给小弟解释下 m_pSlotData[nSlot].dwFlag & SLOT_USED 这条语句啥意思??
- 我突然发现, CRectTracker 在静态编译时候,鼠标指针丢了. ■■■■■■
- 高手指教如何格式化cricheditctrl指定文本?
- 在com中实现一个自定义接口,用来导出从com中接受的数据(实时),怎么实现?
- Type Lib 注册问题
- CArchive 内存泄露问题
- 如何在ATL中使用多线程
- 程序员们,大家编的东东一起来分享(一个站长)
- Getactiveframe不能得到正确的值(得到mainframe的值)??
- 关于精确定时
用GetLastError得到8,查询后就是‘存储空间不足,无法处理此命令’。另外c盘的各个盘的空间都足够大的。
你可先用virtualalloc分配524279个字节看能否成功,如果这时没有错误,而分配524281个字节就出错的话说明我的猜测是对的,把HeapCreate函数里面的第三个参数改为0就行了。
实际上我只是用virtualalloc分配1k的内存,没有设计HeapCreate函数,但是也会失败。下面是代码:
PBYTE pNewBuffer = (PBYTE) VirtualAlloc(NULL,1024,MEM_COMMIT,PAGE_READWRITE)我的程序是作为中间件运行,处理socket连接的。每当一个socket联上来,就根据数据量分配一块内存,当io处理完毕,就用virtualfree函数释放内存。现在是当处理到1万5000多个连接时,就会出现分配内存失败的情况。
PBYTE pNewBuffer = (PBYTE) VirtualAlloc(NULL,1024,MEM_RESERVE,PAGE_READWRITE);
//提交物理存储器
VirtualAlloc(pNewBuffer,65536,MEM_COMMIT,PAGE_READWRITE);......//回收提交的物理存储器
VirtualFree(pNewBuffer,65536,MEM_DECOMMIT);
//释放已保留的区域
VirtualFree(pNewBuffer,0,MEM_RELEASE);上面的代码是示例,要结合你的问题情况来分析的话,还请贴上和VirtualAlloc()和VirtualFree()函数有关的代码。