除虫记之C#调用C函数出现的诡异错误



作者:朱金灿

来源:http://blog.csdn.net/clever101

 

同事反映在在项目中使用C#程序调用我们部门编写的C++模块出现一个诡异错误:在调用A算法失败后,其它算法均不能调用成功,但是程序并没有崩溃。

 

C#程序是通过调用C接口函数,然后C接口函数来调用C++函数。C接口函数的代码大致如下:



try
	{
		CPlusPlusFunction();  // C++函数
	}
	catch(exception &e)
	{	
		errorlog<<_T("异常错误为:")<<e.what()<< " 类型为: "<<typeid(e).name();
		return 0;
	}

原来错误是在C++函数中申请了过大内存,导致C#程序捕捉到了C++的申请内存失败的异常,但是内存并没有释放,因此运行其他模块凡是要申请内存时都会申请失败导致运行失败,但是程序并不崩溃,因为C#程序能够捕捉C++的申请内存失败的异常。



原文地址:https://www.cnblogs.com/lanzhi/p/6469769.html