VS2008写的“保留”功能

VS2008写的“保存”功能
void CGridCtrlTestDlg::OnSave() //保存操作
{
// TODO: 在此添加命令处理程序代码

char fileBuffer[5059] , wBuffer[5059] ;
memset(fileBuffer,0,5059);
memset(wBuffer,0,5059);
char *p_wBuffer,*temp; //指向wBuffer[]
temp=new char[10];
p_wBuffer=new char[5059];
p_wBuffer=wBuffer;

int i_Buf=0;
char *str=new char;
//把GridCtrl表格中的数据填充到wBuffer中
for (int r=1;r<=68;r++)
{
for (int c=1;c<=13;c++)
{
//获取单元格数据
CString cstr;
cstr=m_pGrid.GetItemText(r,c);
str=(char *)cstr.GetBuffer(0);
char *p_str;
p_str=new char[10];
p_str=str;

int i=0;
for (;i<9;i++)
{
*p_wBuffer=*p_str;
p_wBuffer++;
p_str++;
if (*p_str==0x00)
{
break;
}
}
*p_wBuffer=0x00;
p_wBuffer++;
}
}
delete[] p_wBuffer;

int wBSize;
CFile out;

CFileDialog outDlg(FALSE, NULL, NULL, NULL, _T("自定义文件类型 (*.txt)|*.txt|所有文件 (*.*)|*.*||"), NULL);
//设定保存对话框标题
outDlg.m_ofn.lpstrTitle = _T("保存自定义文件");
//使用自定义的文件名缓存
outDlg.m_ofn.lpstrFile = fileBuffer;
//设定保存文件的默认后缀,如果自己有输入后缀,则时候输入的后缀
outDlg.m_ofn.lpstrDefExt = "txt";
//设定缓存大小
outDlg.m_ofn.nMaxFile = 5000;

//显示对话框
if(outDlg.DoModal() == IDOK) 
{
//得到文件名,并用创建和写入方式打开
if(out.Open(outDlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) 
{
//在这里把你要写入文件的内容写入缓存,如果写入的内容过长,可以分次写入
//得到写入当前缓存中内容的长度
wBSize = 1024;//strlen(wBuffer);
//写入文件
out.Write(wBuffer, wBSize);
//关闭文件
out.Close();
MessageBox("保存文件成功!", "提示:", MB_ICONEXCLAMATION | MB_OK);

else 
{
MessageBox("保存文件失败!", "提示:", MB_ICONSTOP | MB_OK);
}
}
}

老是出各种问题VS2008写的“保留”功能,出问题的地方是读取gridctrl表格时,差不多每次循环到70行时就会出错。求解救!
c++ vs2008 MFC GridCtrl

------解决方案--------------------
指针问题,细心地调试下。

在报错的那个对话框出现的时候,打开调用堆栈窗口,找到最顶层的你写的代码的那个行,重点看那里。