错误信息
每次时不时报错,报错后会弹出一堆乱七八糟的内部代码,每次还都不一样
1.xxx.exe已触发一个断点
xlocinfo,xlocale,new_scalar.cpp,xutility
2.未加载wntdll.pdb
Source Not Available
Source information is missing from the debug information for this module.
3.0x77E9A2B9 (ntdll.dll)处(位于 ferry.exe 中)引发的异常: 0xC0000374: 堆已损坏
读取位置 0x00000003 时发生访问冲突。
等等诸如此类的
解决方案
内存泄漏
内存泄漏
内存泄漏
为什么内存泄漏会报这些错误?我猜测是程序修改了外围程序的内存导致。
可以检查以下几个方面:(这里引用luoye2333的解答方案)
1.(我自己的错误)创建动态数组时用了圆括号()而不是方括号[]
new int[5]才是数组,new int(5)虽然能返回地址,但其实是做了这件事:创建一个int值为5,把它的地址返回。因为圆括号是调用了构造函数……
2.检查各种指针,有没有改变指针的值,使程序修改了不知道什么东西
网上的解决方案是调试–选项–符号,那个应该没什么用
————————————————
我自己所碰到的问题解决方法,真的傻傻分清
定义动态一维数组的时候,我根据视频教程写成了:
int len;
int * pArr;
pArr = (int *)malloc(4 * len);
这居然提示了上面的3个错误信息
后来网上找了别外一种格式
pArr = (int * )malloc(sizeof(int)* len);//你们说有区别吗?
或
pArr = (int *)malloc(len * sizeof(int));//有区别吗?我就任性的瞎试一下!
问题解决!!!
然后我再把前面的改回去运行一下,
问题原来是没问题!!!我去啊~~~~
Visual studio 2019企业版这种奇葩的事我已经遇到过好几次了!!
这个问题花了我1个小时!!