IOCPBUFFER* CIOCPServer::AllocBuffer(int nLen)
{
IOCPBUFFER* pBuffer=NULL;
::EnterCriticalSection(&this->m_FreeBufferListLock);
if(this->m_pFreeBufferList==NULL) //如果内存池为空
{
//让pBuffer->buf就在pBuffer之向
pBuffer=(IOCPBUFFER*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IOCPBUFFER)+BUFFER_SIZE);
if (pBuffer == NULL)
{
OnError("AllocBuffer Error , HeapAlloc Error");
}
}
else
{
pBuffer=this->m_pFreeBufferList;
pBuffer->pNext=NULL;
m_pFreeBufferList=m_pFreeBufferList->pNext;
this->m_FreeBufferCount--;
}
::LeaveCriticalSection(&this->m_FreeBufferListLock);
//////////////////////?????????????????????????????????????
if(pBuffer!=NULL)
{
int a = sizeof(IOCPBUFFER);
pBuffer->buf=(char *)(pBuffer+1); //这一句,为什么buf 会指向IOCPBUFFER之后的地方呢?不理解阿
pBuffer->nLen;
}
return pBuffer;
}pBuffer->buf=(char *)(pBuffer+1); //这一句,为什么buf 会指向IOCPBUFFER之后的地方呢?不理解阿
这个的应用 +1 以后,为什么是+1 呢?