我对小的VirtualAlloc混淆,的VirtualAlloc MEM_COMMIT和MEM_RESERVE
我们可以保留内存使用MEM_RESERVE,然后提交它使用MEM_COMMIT,但我对小搞不清什么区别时,下面的两个功能之间使用: ?
m_pvData = VirtualAlloc(NULL, m_nBuffSize, MEM_COMMIT, PAGE_READWRITE);
m_pvData = VirtualAlloc(NULL, m_nBuffSize, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
什么是选择第二的benfit
我可以使用下面的功能得到缓冲:
void* pdata = VirtualAlloc(NULL, 64*1024*1024, MEM_COMMIT, PAGE_READWRITE);
if (pdata == NULL)
{
cout<<"Last error is "<<GetLastError()<<endl;
}
没有错误
因为第一个在技术上是不正确的。你不能提交没有保留。 – 2014-09-25 05:59:01
但我可以使用下面的函数来分配缓冲区,如下所示: void * pdata = VirtualAlloc(NULL,64 * 1024 * 1024,MEM_COMMIT,PAGE_READWRITE); if(pdata == NULL) cout <<“Last error is”<< GetLastError()<< endl; } – user2714997 2014-09-25 07:18:46
操作系统可以猜出你的意思。所以没有区别。 – 2014-09-25 08:18:46