一台Linux机器上的分段错误,但使用C ++代码不在另一台机器上

恩里科·安德利尼:

我一直有一个特殊的问题。我在工作的Linux群集上开发了一个C ++程序。我试图在Ubuntu 14.04机器上在家中使用它,但是该程序由6个文件组成:main.hpp,main.cpp(取决于)sarsa.hpp,sarsa.cpp(Sarsa类)(取决于) wec.hpp,wec.cpp确实可以编译,但是当我运行它时,它要么返回segmenation fault要么不输入该类的一个基本函数Sarsa

主代码调用构造函数和设置函数没有问题:

  Sarsa run;
  run.setVectorSize(memory,3,tilings,1000);

等等

但是,它不能运行public函数episode,因为learningRate应该包含一个大整数的,对于所有情节(迭代)均返回0。

learningRate[episode]=run.episode(numSteps,graph);}

我尝试使用gdb调试代码,该代码已返回:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000408f4a in main () at main.cpp:152
152     learningRate[episode]=run.episode(numSteps,graph);}

我也尝试过valgrind,它返回了:

==10321==  Uninitialised value was created by a stack allocation
==10321==    at 0x408CAD: main (main.cpp:112)

但是没有内存泄漏问题。

我想知道是否存在尝试调试外部文件的设置sarsa.cpp,因为我认为该类很可能是罪魁祸首

在文件中,我使用C ++ v11语言(尽管我希望在编译时会出错),所以我什至使用进行了编译g++ -std=c++0x,但没有任何改进。

不幸的是,由于代码的大小,我无法在此处发布它。我真的很感激此问题的任何帮助。我有什么明显的遗漏吗?您至少可以帮助我进行调试吗?

预先感谢您的帮助。

更正: main.cpp:

全局数组的定义:`#define numEpisodes 10

int learningRate [numEpisodes];`

main函数结束时

for (int episode; episode<numEpisodes; episode++) { if (episode==(numEpisodes-1)) { // Save the simulation data only at the graph=true;} // last episode learningRate[episode]=run.episode(numSteps,graph);}

约翰·布林格:

正如您刚刚添加到问题中的代码所揭示的那样,出现了问题,因为您没有初始化episode变量。在分配一个值之前使用其值的任何代码的行为都是未定义的,因此,程序在一个环境与另一个环境中的行为完全不同是完全合理的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在另一台机器上指向本地主机

在另一台机器上挂载系统宿主用户目录

在另一台机器上使用gulp项目

一台机器上出现堆栈溢出错误,而另一台机器不在同一代码上

如何从本地网络上的另一台机器访问Docker容器

ESRI层显示在一台机器上,但不在另一台机器上

属性在一台机器上工作正常,但在另一台机器上却报错

无法使用在另一台机器上运行的代码接收多播数据

OpenGl中的所有内容都是白色的,相同的代码可以在另一台机器上正常运行

在另一台机器上继续我的Web浏览

与侦听器不一致-一台机器上的onUpdate和另一台机器上的onReplaced

JFreeChart Java JAR不在另一台机器上运行

XCode 5.1-> Xcode方案在另一台机器上不可见

存储过程在一台机器上成功但在另一台机器上失败?

如何在一台机器上编译幻象,然后在另一台机器上“移植”?

从另一台机器导入MDF

从另一台机器获得的SID上的ConvertSidToStringSid

如何在Ubuntu的另一台机器上移动Alpine邮件?

来自另一台机器的ssh命令

在一台机器上构建内核,在另一台机器上安装

Python urllib2代码在一台机器上返回“ HTTP错误503”,但另一台机器未返回

在另一台机器上使用新创建的插件

将一台linux机器挂载到另一台linux机器上

为什么一个tfs构建摘要显示在一台机器上而不是另一台机器上的测试结果

如何从另一台机器查看托管在 ubuntu 上的 Web 应用程序?

如何收集要在另一台机器上提交的错误数据?

在一台机器上访问数据库运行时错误 3340,但在另一台机器上没有

为什么这个python代码在一台机器上而不是另一台机器上给出“TypeError:JSON对象必须是str,而不是'bytes'”

在一台机器上编译 Go 代码并在另一台机器上运行它会降低程序的性能吗?