今天遇到一个很奇怪的问题,
当代码如下时:
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
http://blog.csdn.net/blz_wowar/article/details/2176536
但是感觉这些都不适用,没有自己加载的dll。