MyException - 我的异常网
当前位置:我的异常网» C++ » 为什么windows上没有double free 错误

为什么windows上没有double free 错误(2)

www.MyException.Cn  网友分享于:2013-02-16  浏览:20次

    BitWiseCopyClass objB;    
objB = objA;
在windows下面这个指向的不是同一地址!
------解决方案--------------------
抛出 double free 异常 是一个确定的行为
你写了行为未定义的代码却去期待一个确定的行为.这是错的.
------解决方案--------------------
用Visual Studio构建,执行得到的exe的时候直接被杀毒软件干掉。。。。。
------解决方案--------------------
引用:
用Visual Studio构建,执行得到的exe的时候直接被杀毒软件干掉。。。。。

你不会在执行得到的exe之前先把杀毒软件干掉吗?
------解决方案--------------------
造成内存泄露并且还导致了两个对象的指针指向同一块内存区域,我觉得delete在指向之前可能做了某些判断致使未抛出错误,这仅仅是我个人观点。
永远不要依赖于未定义行为
------解决方案--------------------
取决于编译器实现而不是操作系统。这属于UB(未定义的行为).
------解决方案--------------------
两次delete同一内容,查一下C++标准文档,如果没有规定,就别指望两个平台会有一致的结果.
------解决方案--------------------
double free异常是由管理内存分配的库抛出的,这个库是由平台决定的,自然不同平台下的行为可能会不一样。

C++标准里只说这是一个未定义。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有