记一个烦了我一下午到半夜的编程错误!free(): invalid next size (fast): 0xb73004e8 ***
调试了半天,定位到是delete引起的奔溃,我怀疑了好久是不是申请内存后,指针操作出了问题,导致向没申请的内存区域写入了东西,导致释放出了问题。
可是这个delete有时候出问题,有时候又不会。
后来在校论坛上发帖,得到了提醒。可能是我申请内存和释放内存的语句出了问题,我居然之前没想到过这一点。
是这样的:
我原来的代码为:
delete []msg2;
注意new后面()和[]的区别。
申请内存应该是
char *p = new char[10] ;//假设是申请10个字节
而char *p = new char(10);//是申请一个字节的内存,并把这个字节的内存赋值10
区别太大了。
而释放的时候应该是
new和delete组合
new[]和delete[]组合
- 1楼wangqiulin1234563小时前
- 同是遇到这个问题的人,当时我也搞了很久很久,没找到原因