可能是堆被损坏,这也说明 XX.exe 中或它所加载的任何 DLL 中有 bug

今天遇到一个很奇怪的问题,

当代码如下时:

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值