AIX使用g++编译的程序使用异常时的问题

来源:互联网 发布:手机短信转移软件 编辑:程序博客网 时间:2024/06/05 07:05

     继解决了aix上各种奇怪的缺少编译选项导致的问题之后,我又碰到了新的问题。

     程序在不断抛出异常的情况,程序不是很稳定。我使用了一个string来保存异常的信息,然而在实际运行中发现,经过多次异常抛出(有时侯需要很多)后,会出现该string有奇怪的表现。比如说,在重新抛出异常进行拷贝的时候,string的引用变为NULL;或者在打出异常信息的时候,string的引用变为NULL。

     工期紧的情况下面对这样的问题是比较让人郁闷的,因为对异常机制的不了解,我只能继续撞大运编程(我讨厌这么做,只能说是病急乱投医)。考虑到程序另一个抛出异常的地方从来没出错过,而那里抛出的异常是otl的异常,otl使用了char数组来记录异常信息。所以我猜测,aix上g++所实现的异常机制,在多线程情况,如果存在动态内存分配(stl string),会存在缺陷。

     我做出撞大运的改动,将基类中的异常类记录异常信息的成员变量由string改为char数组。结果,经过3天的测试,前面的问题不再出现,程序运行正常稳定。

原创粉丝点击