可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug
2013-08-19 21:04
225 查看
今天遇到一个很奇怪的问题,
当代码如下时:
上述不是我完整的程序,cout是实例,就是每次运行到cout只要输出是小数都会出错,而int类型啥的都不出错。
当工程设置运行库“多线程DLL(MD)”
XXX.exe 中的 0x7707e4e4 (ntdll.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x0000000000000024 时发生访问冲突
当工程设置运行库“多线程调试DLL(MDd)”
只要是cout或者file.close()或者free(s)都会出现
其原因可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug
/article/11039945.html
但是感觉这些都不适用,没有自己加载的dll。
之后一点一点注释,发现没有strcpy这个函数就不会崩溃,而加上之后在cout处还是会崩溃,每次出错都在C的运行时库,后来把代码改成了
这样可以顺利运行,但是delete的时候程序会有问题,这样就造成了内存泄露,很奇怪。
最后搞清楚了这种情况是越界了,所以free会出错,delete也会出错,/article/7797281.html
当代码如下时:
char* s = (char*)malloc(20*sizeof(char)); string buffer; const char* conchar; char* p;
double x = 0.01; while(getline(file,buffer)){ const int len = buffer.length(); conchar = buffer.c_str();//m_conchar为const char * strcpy(s,conchar);//换成char* cout<<x<<endl; }
上述不是我完整的程序,cout是实例,就是每次运行到cout只要输出是小数都会出错,而int类型啥的都不出错。
当工程设置运行库“多线程DLL(MD)”
XXX.exe 中的 0x7707e4e4 (ntdll.dll) 处有未经处理的异常: 0xC0000005: 写入位置 0x0000000000000024 时发生访问冲突
当工程设置运行库“多线程调试DLL(MDd)”
只要是cout或者file.close()或者free(s)都会出现
其原因可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug
/article/11039945.html
但是感觉这些都不适用,没有自己加载的dll。
之后一点一点注释,发现没有strcpy这个函数就不会崩溃,而加上之后在cout处还是会崩溃,每次出错都在C的运行时库,后来把代码改成了
//char* s= (char*)malloc(20*sizeof(char)); string buffer; //const char* conchar; char* p; double x = 0.01;
while(getline(file,buffer)){ const int len = buffer.length(); char* s = new char[len]; strcpy(s,buffer.c_str()); //conchar = buffer.c_str();//m_conchar为const char * //strcpy(s,conchar);//换成char* cout<<x<<endl; //delete s; }
这样可以顺利运行,但是delete的时候程序会有问题,这样就造成了内存泄露,很奇怪。
最后搞清楚了这种情况是越界了,所以free会出错,delete也会出错,/article/7797281.html
相关文章推荐
- MFC error可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug
- windows已在xxx.exe中触发一个断点,其原因可能是堆被损坏,这说明xx.exe中或它所加载的任何DLL中有bug。
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
- 中触发一个断点 其原因可能是堆被损坏,这说明 ***.exe 中或它所加载的任何 DLL 中有 Bug
- 调试报错:其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
- “其原因可能是堆被损坏,这说明 ***.exe 中或它所加载的任何 DLL 中有 bug”
- 其原因可能是堆被损坏,这也说明 xxx.exe 中或它所加载的任何 DLL 中有 bug
- 其原因可能是堆被损坏,这说明 *.exe 中或它所加载的任何 DLL 中有 Bug
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug
- ”其原因可能是堆被损坏,这也说明exe中或它所加载的任何DLL 中有bug“的解决办法
- VC中“其原因可能是堆被损坏,这也说明*.exe中或它所加载的任何DLL中有bug”的分析
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
- “原因可能是堆被损坏,这也说明*.exe中或它所加载的任何DLL 中有bug”的解决方案
- 其原因可能是堆被损坏 这说明exe中或它所加载的任何 DLL 中有 Bug
- DLL中用malloc分配了一块内存,但是在exe程序中释放引发的错误:其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug。
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug
- 【其原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决方案
- 【其原因可能是堆被损坏,这也说明 中或它所加载的任何DLL 中有bug】的解决方案
- 其原因可能是堆被损坏,这说明**.exe中或它加载的任何DLL中有Bug VS2005debug下报R6034错误