我正在为MFC应用程序开发一个庞大的老化代码库.随着时间的推移,许多开发人员已经开始使用该代码,因此,我们在处理新分配失败的可能性的代码中有三种不同的方式.
第一种方法是测试new的结果为NULL.我们不使用nothrownew.obj,所以这显然是一个需要清理的错误.
第二个是捕获CMemoryException*(是的,在编译器中启用了C++异常).根据我的理解,MFC会覆盖标准运算符new,而是抛出这个东西.我很确定第二种方法在MFC应用程序本身中是正确的.MFC覆盖new,其奇怪的CMemoryException抛出版本.
最后一个来自我们熟悉C++的人,但不一定是MFC程序员.他们正在捕捉const std :: bad_alloc&.
我真正不知道的是链接到应用程序的静态库会发生什么.这是使用bad_alloc生命的绝大多数代码.假设这些库没有使用MFC或ATL编译,并且只使用标准C++编写,他们是否可以捕获bad_alloc?或者,他们链接的应用程序中MFC的存在是否会使用全局新运算符感染它们并使它们尝试在错误的分配上干净利落地失败?
如果你有答案,你能解释一下它是如何工作的,或者指出我正确的参考来解决这个问题吗?