new 与new(std::throw)引起的问题
AABBDilog 继承自CDialog
命名为化名~~
AABBDilog * pDlg = new AABBDilog ;
AABBDilog * pDlg = new(std::throw) AABBDilog ;
其中std::throw的方式出错,VC提示:
error C2665 : CObject::operator new : none of the 2 overloads could convert all the argument types
我以为是自己写的类的问题,根据提示,并验证。应该是MFC这相关类的问题
我直接用CDIalog实验了存在一样的问题。
是不是因为COBject 的new 对nothrow 不支持?
需要自己的类处理好new(std::nothrow)相关的资源分配问题?
参见effective c++ new相关问题。
有大神可以指点下。
相关推荐
C++ new、delete(new[]、delete[])操作符重载需要注意的问题
主要介绍了C++ new、delete(new[]、delete[])操作符重载需要注意的问题,本文同时讲解了兼容默认的 new、delete 的错误处理方式、多态的问题等内容,需要的朋友可以参考下
C与C++中的异常处理
1. 异常和标准 C 对它的支持................................................................................. 2. Microsoft 对异常处理方法的扩展 .................................................................. 3. 标准 C++异常处理的基本语法和语义.............................................................. 4. 实例剖析 EH........................................................................................................ 5. C++的 new 和 delete 操作时的异常处理......................................................... 6. Microsoft 对于<new>的实现版本中的异常处理............................................ 7. 部分构造及 placement delete ........................................................................ 8. 自动删除,类属 new 和 delete、placement new 和 placem ent delete ... 9. placement new 和 pla cement delete,及处理构造函数抛出的异常 ........ 10. 从私有子对象中产生的异常............................................................................. 11. 异常规格申明.....................................................................................................
std::bad_alloc报错分析[可运行源码]
本文分析了C++中std::bad_alloc报错的常见原因及解决方法。主要原因包括系统内存不足、接口调用参数不一致以及vector容器使用不当。对于内存不足问题,建议检查系统内存占用情况;对于接口调用问题,需确保调用和被调用接口参数一致;对于vector容器问题,需注意其扩容机制可能导致内存需求骤增,同时需正确使用迭代器访问元素,避免访问非法内存。文章还特别指出vector容器的end()指向最后一个元素的下一个地址,访问最后一个元素时应使用--操作符或.back()方法。
让vc6支持new 抛出异常
vc6是不支持new失败时抛出异常的。本文使用windows的api来让new在失败时抛出异常。
c++大学课程那本书exception handling那一节的课件
很好的学习课件dsafaada adsfasdfasdfasdfasdfasdfasdfasdfasdfasdfadfadfasdfasdfasdfasdfasdfasdfasdfasdfasdfa


