我對小的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