工程分为两部分,代理程序和控制台程序。
进行强力测试,代理不停的向控制台发数据,控制台将代理发来的数据,进行存入数据库操作。但是经过一段时间后,控制台程序就无响应了,用vc调试中止运行,发现每次都是处在调用kernel32.dll中0x77e69824处出错。
请问哪位遇到过此问题,还请帮忙。
另外,我想试着找到kernel32.dll中0x77e69824地址到底是什么函数,通过各种工具,都找不到,kernel32.dll里面有这个地址的函数,还请各位帮忙。谢谢。

解决方案 »

  1.   

    kernel32.dll中的问题你也想解决? 劳驾,您的数据库更新速度太快了,你的控制台一定收到了很多数据,不知道你是用的线程还是消息,线程太多或者消息太多,数据库处理的时候处理不过来,而你的控制程序强迫数据库反应,就崩溃了。
      

  2.   

    请问楼上,您对这方面的需求是如何设计的呢。
    我控制台端的设计方式是采用一个队列,char *p[5000],每个代理传上来的数据,我都把它转换成一条SQL插库语句,以new的方式放到队列里面,然后有一个专门的插库线程,负责从队列里面逐条读取,然后逐条插入数据库当中,然后delete掉插过的数据。以上设计当中,有两处过程是不停反复执行的,
    1.从堆栈中反复new何delete
    2.反复地进行数据库插库操作,插库操作用的是m_pCommand->Excute()方式,逐条执行。这两种反复操作肯定会引起一些问题,只是不确定到底是怎么会这样。
      

  3.   

    2,保持了数据连接的,插入数据库中数据可以的,不过注意不要过于频繁,可能引起数据库操作错误
    1,堆上数据new了,要及时的delete
      

  4.   

    回楼上,你说的两点,我都很注意的。
    1.new和delete的使用肯定不会有问题,我进行过压力测试,内存在稳定后是恢复正常的。只是不清楚,这样反复操作,到底会不会对系统造什么什么样的影响,比如说,系统是否会对这种反复的申请释放操作,能不能真正的十分准确地回收内存等。。
    2.你说的不要频繁,我也考虑过,只是不知道该怎么办,我可以保证,同一时刻肯定就只有一个m_pCommand->Excute()函数在执行,这个函数执行完,在执行下一个。当然,这个函数执行完,不代表数据库插库操作也执行完。那怎么办,难道我要在每次执行m_pCommand->Excute()函数后,Sleep一下吗,要是如此,应该Sleep多少呢,多了肯定会影响程序的速度,少了又达不到效果。哎,程序这个东西,实在迷茫啊。