写了一个小程序,运行不稳定,有些时候会报错,忽略错误可以继续运行
跟踪call stack,显示如下
_free_dbg_lk(void * 0x0ed6bf00,int 1) line 1033+60 bytes
_free_dbg(void * 0x0ed6bf00,int 1) line 970+13 bytes
operator delete(void * 0x0ed6bf00) line 351 +12 bytes
CString::FreeData() line 146 +15 bytes
CString::Release() line 157
出错的具体函数代码如下:
CString APPDEAL::CharacterGet(unsigned char *buf, int dwStart, int dwStop)
{
CString temp;
unsigned char *uncTemp1;
uncTemp1=new unsigned char[dwStop-dwStart+1];
memset(uncTemp1,0,dwStop-dwStart+1);
ASSERT (uncTemp1!=NULL);
for (int i=dwStart; i<dwStop; i++)
{
uncTemp1[i-dwStart]=buf[i];
if (buf[i+1]=='\r' && buf[i+2]=='\n')
{
uncTemp1[i-dwStart+1]=0x00;
break;
}
}
temp.Format("%s",uncTemp1);
temp.Replace('/','.'); delete []uncTemp1;
uncTemp1=NULL;
return temp;
}程序有些时候会报错,自己分析应该就在调用完函数返回清理时报错,有些时候正常
程序报错界面如下:Debug Error!
Program:G\code learning\NetScout-0830\NetScout\Debug\NetScout.exe
DAMAGE: after Normal block(#4090921) at 0x0f21cc30想知道是不是该段函数体有不规范的地方,敬请指正
跟踪call stack,显示如下
_free_dbg_lk(void * 0x0ed6bf00,int 1) line 1033+60 bytes
_free_dbg(void * 0x0ed6bf00,int 1) line 970+13 bytes
operator delete(void * 0x0ed6bf00) line 351 +12 bytes
CString::FreeData() line 146 +15 bytes
CString::Release() line 157
出错的具体函数代码如下:
CString APPDEAL::CharacterGet(unsigned char *buf, int dwStart, int dwStop)
{
CString temp;
unsigned char *uncTemp1;
uncTemp1=new unsigned char[dwStop-dwStart+1];
memset(uncTemp1,0,dwStop-dwStart+1);
ASSERT (uncTemp1!=NULL);
for (int i=dwStart; i<dwStop; i++)
{
uncTemp1[i-dwStart]=buf[i];
if (buf[i+1]=='\r' && buf[i+2]=='\n')
{
uncTemp1[i-dwStart+1]=0x00;
break;
}
}
temp.Format("%s",uncTemp1);
temp.Replace('/','.'); delete []uncTemp1;
uncTemp1=NULL;
return temp;
}程序有些时候会报错,自己分析应该就在调用完函数返回清理时报错,有些时候正常
程序报错界面如下:Debug Error!
Program:G\code learning\NetScout-0830\NetScout\Debug\NetScout.exe
DAMAGE: after Normal block(#4090921) at 0x0f21cc30想知道是不是该段函数体有不规范的地方,敬请指正
解决方案 »
- 自己做的矢量图形编辑器如何实现打开和保存操作
- MFC控件工具条的实现问题
- 为何无法每次都成功写入注册表?
- 高人:有什么好办法让编译器,在不同的配置下,选择不同的资源编译?
- 在对话框上画矩形,怎样把之前画的抹去
- 怎样编写一个供asp,javascript调用的组件?
- 求助啊!(MFC中文件夹的复制)~~~~
- 关与tree控件的问题
- 高分求教CTreeCtrl的排序问题!
- 请问到哪里能找到个学习编程的地方?不要跟我说在家里自学!!!!!!!!!!!!!!!!
- -----100分求助!!------- OpenGL里使用顶点数组时还能用 glLoadName() 的选择功能吗?
- 为什么用WinHttp丢失数据?
if (buf[i+1]=='\r' && buf[i+2]=='\n')我改了一下,你试试CString APPDEAL::CharacterGet(unsigned char *buf, int dwStart, int dwStop)
{
const int nMaxLen = dwStop-dwStart+1;
unsigned char* uncTemp1 = new unsigned char[nMaxLen];
ASSERT (uncTemp1!=NULL);
memset(uncTemp1,0,nMaxLen); for (int i=dwStart; i<dwStop; i++)
{
*uncTemp1 = buf[i];
if ((buf[i+1]=='\r' && buf[i+2]=='\n')||(i+2>=dwStop))
{
uncTemp1[i-dwStart+1]=0x00;
break;
}
}
CString temp = uncTemp1;
temp.Replace('/','.'); delete []uncTemp1;
uncTemp1=NULL;
return temp;
}
temp.Replace('/','.');
_free_dbg(void * 0x0ed6bf00,int 1) line 970+13 bytes
operator delete(void * 0x0ed6bf00) line 351 +12 bytes
CString::FreeData() line 146 +15 bytes
CString::Release() line 157
一般是堆被破坏.访问越界?