+ -
当前位置:首页 → 问答吧 → 关于“bad alloc exception thrown”的问题(在线等,求帮助)

关于“bad alloc exception thrown”的问题(在线等,求帮助)

时间:2011-12-12

来源:互联网

先简单说下我的程序。
这是一个报价系统软件,系统从外界(比如路透、德意志、汇丰等)接入外汇报价,经过系统报价模型转化为系统报价,然后下发给下游系统。
由于外汇报价比较频繁,对数据库的记录操作比较多(主要是记录历史外汇报价),直接提交sql语句的方式,数据库执行效率较差。现在采用绑定变量提交的方式。
#define ROWCOUNT 10000
//即期核心价
class TBindSpot
{
  private:
  char COREID[ROWCOUNT][5];
  char RATECODE[ROWCOUNT][7];
  char FEEDID[ROWCOUNT][5];
  ...
  public:
  ...
}
系统每次采用绑定变量需要new来分配一块内存,例如new TBindSpot。现在假设每秒钟需要执行18次new的操作,private下面的变量个数大概为50-80个。
程序在windows平台下面运行一段时间后,发现cpu使用率为60-80%,内存使用率由原来的1.2G变为1.3G(系统内存2G),观察到经过一段时间之后,由Process Explorer检测到的“系统提交”量突然从1.7GB暴涨到3.3GB。
然后日志记录里面就开始出现“bad alloc exception thrown”的错误。


在线等。

作者: ccpud   发布时间: 2011-12-12

new了以后在哪里delete呢?

作者: ccrun   发布时间: 2011-12-12

引用 1 楼 ccrun 的回复:

new了以后在哪里delete呢?

程序采用多线程的方式。在工作线程workthread里面new,delete则在数据库写线程里面DBWriteThread.

作者: ccpud   发布时间: 2011-12-12