【求助】我把我出现得问题表述一下,请各位大鸟帮我分析下是什么原因?

isea2008 2009-04-21 10:38:45
我主要用c++调用动力学仿真软件,并提取仿真的结果到c++中进行分析处理,改变动力学模型,并不断的重复这一过程。仿真结果的数据量与仿真时间相关,大概数据量与仿真时间成正比。

c++程序分成两个类,一个类A调用动力学仿真软件,第二个类B从仿真的结果文件中提取数据并进行分析处理。整个过程定义a,b为类A,B的对象,并定义成global,即对象没有重复定义。

当我把仿真时间设成5s时,这时可以重复的次数是26次,仿真完了到了对结果文件进行数据提取并分析处理时出现错误,提示内容是:“Unhandled exception in Graph.exe:0xC0000005:Access Violation”。我查了一下,错误非常奇怪,类B中的数据(包括int型数据,double型数据,char型数据)的值全部变化了,比如,有一个滤波器的阶数M本来是8,但是变成了一个很大的整数915728259,本来很大的double型变量yield_stress_draw=6000000,结果变成了-0.013175900000000001。

当我把方针时间设成50s时,第二次重复就不行了,出现错误,错误和仿真时间为5s的一样,很奇怪!

请各位大鸟帮我分析一下,是哪里除了问题。

欢迎大家前来讨论!
...全文
123 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjwx19 2009-04-21
  • 打赏
  • 举报
回复
我看像是 scope 的问题,楼主看看是不是全用了local量? 再就可能是指针拷贝问题,调用函数的时候用了指针?传递数值的时候复制了指针还是指针内容?
ljhiiiiiiii 2009-04-21
  • 打赏
  • 举报
回复
很显然是内存中的非法指针访问引起的
用windbg调试就可以查看非法指针
  • 打赏
  • 举报
回复
> 数据量与仿真时间成正比
> 当我把仿真时间设成5s时,这时可以重复的次数是26次
> 当我把方针时间设成50s时,第二次重复就不行了

考虑一下数据过多导致缓存溢出的问题,你具体是用什么方式来保存仿真的数据的?
  • 打赏
  • 举报
回复
应该是内存访问越界,楼主跟踪一下代码看看,找出问题点,然后贴出来大家分析下
  • 打赏
  • 举报
回复
不懂,帮顶吧
ltc_mouse 2009-04-21
  • 打赏
  • 举报
回复
Graph.exe是你的应用程序还是仿真软件? Access Violation一般是访问越界了。分段排除吧。比如,重复运行仿真而不进行数据分析,得到的数据都正确吗?
passionboy03 2009-04-21
  • 打赏
  • 举报
回复
感觉像内存出问题了,还有你说的那个阶数,在定义这个变量的时候给它赋值0,看后来还会变这么大吗?这里我感觉是值没有传进来,
你只是这么说是说不很清楚的,建议你一步步调试一下,看问题报错在哪儿了
[Quote=引用楼主 isea2008 的帖子:]
我主要用c++调用动力学仿真软件,并提取仿真的结果到c++中进行分析处理,改变动力学模型,并不断的重复这一过程。仿真结果的数据量与仿真时间相关,大概数据量与仿真时间成正比。

c++程序分成两个类,一个类A调用动力学仿真软件,第二个类B从仿真的结果文件中提取数据并进行分析处理。整个过程定义a,b为类A,B的对象,并定义成global,即对象没有重复定义。

当我把仿真时间设成5s时,这时可以重复的次数是26次,仿真完了…
[/Quote]
mengde007 2009-04-21
  • 打赏
  • 举报
回复
有代码吗
diannaomingong 2009-04-21
  • 打赏
  • 举报
回复
大概是解析文件格式出了问题,915728259这样的,可能是访问数组或者向量越界
Jinhao 2009-04-21
  • 打赏
  • 举报
回复
你表述的信息太少了,简单地说就是读写了你无权访问的内存,你操作了某个空指针。对于一般内存错误的问题,还是得自己解决,代码量太多,这论坛的人也没办法去调适你的程序,即使你把代码发了过来,也没几个人有时间来帮你解决这个问题。
isea2008 2009-04-21
  • 打赏
  • 举报
回复
谢谢各位的意见和提示,我再查查吧!
isea2008 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ljhiiiiiiii 的回复:]
很显然是内存中的非法指针访问引起的
用windbg调试就可以查看非法指针
[/Quote]

我不会使用windbg,我下载后试试吧!
isea2008 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 SmallSmallSmallSmall 的回复:]
> 数据量与仿真时间成正比
> 当我把仿真时间设成5s时,这时可以重复的次数是26次
> 当我把方针时间设成50s时,第二次重复就不行了

考虑一下数据过多导致缓存溢出的问题,你具体是用什么方式来保存仿真的数据的?
[/Quote]


保存仿真软件是仿真软件自动保存的,我只是从这些文件中读出我需要的数据!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧