zw88865996 2013-09-07 08:48 采纳率: 0%
浏览 3067

C++程序在vs2010下运行出现错误:HEAP CORRUPTION DETECTED ........

我的c++程序之前在vc++6.0环境下运行正常,现在在VS2010下调试出现错误:HEAP CORRUPTION DETECTED......,经查询,可能是在Myfile.cpp中使用了new.delete申请了内存空间,导致内存操作越界,在该程序段加了 ASSERT(_CrtCheckMemory())后没有出现那个错误提示,但运行后对话框窗口不见了,实际上不能成功,由于我是新手,初次到CSDN中来求助,还望前辈高手不吝赐教,小弟万分感谢。其中的部分代码如下:
int ChangeNameExtension( CString s1)
{
int i,j;
char *ExtendedName;

USES_CONVERSION;
int n = s1.GetLength();
char *temp = new char(n*2+1);
strcpy(temp,(LPCTSTR)s1);

if ((ExtendedName=strchr(temp,'.'))==NULL)
{
//AfxMessageBox("文件扩展名有误!");
return -1;
}

ExtendedName++;
return 0;
}

int ChangeFileName( CString s1)//return:-1, 0, 1
{
int i,j;
char *ExtendedName;

USES_CONVERSION;
int n = s1.GetLength();
char *temp = new char(n*2+1);
strcpy(temp,(LPCTSTR)s1);
// ASSERT(_CrtCheckMemory());

if ((ExtendedName=strchr(temp,'.'))==NULL)
{
//AfxMessageBox("文件扩展名有误!");
delete[] temp;
return -1;
}

ExtendedName--;
//判断文件名是否符合递增要求,即是否有数字。
if (*ExtendedName<'0' || *ExtendedName>'9')
{
delete[] temp;
return -1;
}

for(i=0;i<=ExtendedName-s1;i++)
if(*(ExtendedName-i)<'9')
{
(*(ExtendedName-i))++;

  j = i - 1;
  while(j>=0)
  {
    (*(ExtendedName-j)) = '0';
    j--;
  }
  delete[] temp;
  return 1;
}
delete[] temp;
return 0;

}

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-01-03 14:01
    关注

    设置断点,单步跟踪调试一下,看你具体出错的代码语句。分析

    评论

报告相同问题?

悬赏问题

  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘