今天在调试的时候突然冒出来一句:HEAPCORRUPTION DETECTED: after normal block at 0x0067B860

CRTdetected that the application wrote to the memory after end of heapbuffer

今天在调试的时候突然冒出来一句:HEAP CORRUPTION DETECTED: after normal block at 0x0067B860, CRT detected that the ap


大概意思是在0x0067B860出现一个阻塞,CRT侦测到在堆缓存尾段有程序试图写进内存。意思大概就这样,瞎翻译的。

于是调试了一下,这是在main函数离开释放堆空间出现的,心急如焚的我看了一遍又一遍的程序,又改了了一改代码,尼玛还是没有解决不了问题。问谁呀,一切答案尽在百度。百度上都说是内存溢出,

再查了一下。是这个对象的内存出现了一点问题。如图

CStrings1 = "abc", s2 ="9080",s3 ("this is a goodday", 4),ss('^',8);

今天在调试的时候突然冒出来一句:HEAP CORRUPTION DETECTED: after normal block at 0x0067B860, CRT detected that the ap

于是我找到构造函数,顺藤摸瓜胡乱摸一把.

今天在调试的时候突然冒出来一句:HEAP CORRUPTION DETECTED: after normal block at 0x0067B860, CRT detected that the ap

CString::CString(charch, int nRepeat)

{

m_pData= new char[nRepeat + 1]{0};

memset(m_pData,ch, nRepeat);

m_pData[nRepeat+ 1]='\0';

}

程序查了个遍,没有问题啊,申请的堆空间大小是nRepeat +1,我也只用了这点内存啊.没毛病啊,有有时候事情并不是你想像的那样,可能升级了吧,于是我将申请的内存该大了一点点

CString::CString(charch, int nRepeat)

{

m_pData= new char[nRepeat + 5]{0};

memset(m_pData,ch, nRepeat);

m_pData[nRepeat+ 1]='\0';

}

今天在调试的时候突然冒出来一句:HEAP CORRUPTION DETECTED: after normal block at 0x0067B860, CRT detected that the ap

明明我申请的堆空间够了。带着疑惑,还是把代码改了一下,结果完美,明没有出现问题,明内存刚刚好啊,怎么这样就执行不了了

CString::CString(charch, int nRepeat)

{

m_pData= new char[nRepeat + 1]{0};

memset(m_pData,ch, nRepeat);

m_pData[nRepeat+ 1]='\0';

}


再看了一下不对,最后一句貌似是有点错误.我申请了nRepeat + 1个,而计算集中排序是从0,1,2开始,所以有可能是这句m_pData[nRepeat+ 1]='\0';
出现问题.我是又试了一下;结果稍后解答

相关文章:

  • 2021-08-12
  • 2022-12-23
  • 2022-12-23
  • 2021-06-27
  • 2021-09-05
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
猜你喜欢
  • 2021-07-26
  • 2021-10-26
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
  • 2022-01-28
相关资源
相似解决方案