帮看看,delete出错。到底是神马有关问题?小弟我无解

帮看看,delete出错。到底是神马问题?我无解啊
void print_function()//遍历本地可用的打印机名称
{
DWORD dwSize,dwPrinter;
//将第四参数设置为NULL,第五参数设置为0,是为了从第六参数获取第四参数的默认大小
//(当第五参数小于能存放第四参数结构的大小时候,第六参数就返回存放的大小)
::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,NULL,0,&dwSize,&dwPrinter);
   BYTE *pBuffer =new BYTE[dwSize];//申请内存
//当第三参数是5或者2的时候,是遍历所有有效的打印机
   ::EnumPrinters(PRINTER_ENUM_LOCAL,NULL,5,pBuffer,dwSize,&dwSize,&dwPrinter);

if(dwPrinter != 0)
{
PRINTER_INFO_5 *pPrnInfo = (PRINTER_INFO_5*)pBuffer;
    for(int i = 0; i<=(int)dwPrinter; i++)//循环显示遍历得到的可用打印机名称
    {
char *strprnInfo = pPrnInfo->pPrinterName;
MessageBox(NULL,strprnInfo,"印表機名稱",MB_OK);
pPrnInfo++;
    }
}
delete [] pBuffer;

------解决方案--------------------
MessageBox(NULL,strprnInfo,"印表機名稱",MB_OK);  strprnInfo 指针为空了。导致MessageBox错误