请教这段代码的指针哪里有有关问题

请问这段代码的指针哪里有问题?
char   *pRead   =   new   char[fr.GetLength()-37336];
                        char   pBuf[5]   =   {0};
char   pbuffer[100];
int     a=0;//计数
fw.Write( "U-D         E-W         N-S ",17);
char       s[4]       =       "\r\n "       ;  
fw.Write(s,2);
if   (int   nRead   =   fr.Read(pRead,   fr.GetLength()-37336))
{
  for   (int   n   =   0;   n   <nRead;   )
{
pbuffer[0]=pRead[n];
                        pbuffer[1]=pRead[n+1];
sprintf(pBuf,   "%02d   ",*(short   int*)pbuffer);
  fw.Write(pBuf,   3);//写第n秒垂直向数据
fw.Write( "         ",   4);
......


运行后有如下提示:

Debug   Assertion   Failed!
 
Program:C:\Program   Files\****\Your.exe
File:filecore.cpp
Line:118

For   information   on   how   your   program   can   cause   an   assertion
failure,see   the   Visual   C++   documentation   on   asserts.

(Press   Retry   to   debug   the   application)

终止           重试             忽略

点击忽略后一切正常,别人说是指针的问题,哪个地方错了呢

------解决方案--------------------
nRead 是否超出整数范围(nRead <32768)?
------解决方案--------------------
把 debug 改成 release
试试..
--------
方法:

vc --> build --> set active configuration //我用的是vc6

改dubug 为release
------解决方案--------------------
楼上的误人...
晕.纯粹是掩人耳目.. debug出错,说明程序有问题 改成release 也许掩盖了问题,但万一指针问题在某种输入下带来致命问题呢?

由于代码里不少未定义的变量,本人不是很清楚.粗看没什么问题.
有两个问题是:
1.是你的for确定没有第3表达式?

2.假设数组是5(虽然看你的代码 仿佛数字很大,这里就简单的说)
nRead最大值是5;(即完全输入)
当n是4的时候 符合for的条件;
pRead[n+1];就成了pRead[5]了...而数组只有5的长度,末尾应该是pRead[4],所以这里应该改一下;但我不知道这个指针错误是不是导致debug警告的原因.

一般的指针调试办法:
写个
void M(char * s)
{
AfxMessageBox(s);
}
让可疑的句子前面都加上,M(1),M(2),....追踪程序到哪个句子出现debug警告.
然后全力研究那句代码.

本人觉得debug的知识学的烦琐 ,平常都是这样调试的,于己足够了..

头晕 可能看错.


------解决方案--------------------
for (int n = 0; n <nRead; )
无穷循环?
char *pRead = new char[fr.GetLength()-37336];
是否判断了fr.GetLength()肯定大于37336?