小编Enr*_*ini的帖子

一台 Linux 机器上出现分段错误,但另一台 Linux 机器上的 C++ 代码却没有出现分段错误

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

主要代码调用构造函数和setter函数没有问题:

  Sarsa run;
  run.setVectorSize(memory,3,tilings,1000);
Run Code Online (Sandbox Code Playgroud)

ETC。

但是,它无法运行公共函数episode,因为learningRate应该包含一个大整数,但对于所有剧集(迭代)都返回 0。

learningRate[episode]=run.episode(numSteps,graph);}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 gdb 调试代码,它返回了:

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

我也尝试过valgrind,它返回:

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

但没有内存泄漏问题。

我想知道是否有一个设置可以尝试调试外部文件sarsa.cpp,因为我认为该类可能是罪魁祸首

在该文件中,我使用 C++v11 语言(不过,我预计会在编译时出现错误),因此我什至使用 进行了编译g++ -std=c++0x,但没有任何改进。

不幸的是,由于代码的大小,我无法将其发布在这里。我真的很感激任何有关这个问题的帮助。我错过了什么明显的事情吗?你至少能帮我调试一下吗?

预先感谢您的帮助。

更正: main.cpp:

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

int LearningRate[numEpisodes];`

函数即将结束时main

for (int …

c++ linux portability segmentation-fault

5
推荐指数
1
解决办法
7039
查看次数

Github 页面中的 Mathjax

我在 Github 上启动了一个新项目,因为我需要与人们合作,所以我想开始一个像样的文档。我想使用 Github Pages 来完成此任务,但文档需要包含许多方程,例如https://wec-sim.github.io/WEC-Sim/theory.html

我在网上读到很多帖子,称 Mathjax 提供了一个在浏览器上读取方程的好工具,并且已链接到 Github 页面。然而,尽管我尝试遵循许多不同的策略,但我还无法让我的页面显示任何方程式。

您可以在https://github.com/enricoande/uuv找到我的项目,并在https://enricoande.github.io/uuv/找到相应的页面。该页面是从https://github.com/enricoande/uuv/blob/master/docs/README.md构建的。

最初,我根本无法显示方程式,但可以看到页面中的文本。现在,我什至无法看到该页面。添加文件https://github.com/enricoande/uuv/blob/master/docs/_layouts/page.html后会发生这种情况,其中内容如下

<script type="text/javascript"
    src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
Run Code Online (Sandbox Code Playgroud)

我看不到我的页面的原因是否有可能是Mathjax太慢了(我在网上找到了这方面的评论)?否则,您对我可以采取哪些措施来修复页面以显示方程有什么建议吗?

正如你所看到的,我是 Github 页面和 html 的初学者。

任何建议都非常感谢,因为我现在完全陷入困境。感谢您的帮助!

github mathjax github-pages

5
推荐指数
1
解决办法
1517
查看次数

C中的整数乘法不正确

Simulink中的C编码S函数显示不正确的行为,我设法将问题缩小到不正确的整数乘法.

在代码的开头,我有类似的东西:

#define NRBF       21
#define NRBF1  NRBF+1
Run Code Online (Sandbox Code Playgroud)

然后,在脚本中的函数我有:

void function_name(SimStruct *S, const int_T a)
{
...
    int_T base;
    base = a*NRBF1;
    printf("%i\t", a);
    printf("%i\t", NRBF1);
    printf("%i\n", base);
..
}
Run Code Online (Sandbox Code Playgroud)

现在,如果a=0,NRBF=21我有(而不是base=0)

0  22  1
Run Code Online (Sandbox Code Playgroud)

如果a=1,NRBF=21我有(如预期的那样base=22)

1  22  22
Run Code Online (Sandbox Code Playgroud)

如果a=2,NRBF=21我有(而不是base=44)

2  22  43 
Run Code Online (Sandbox Code Playgroud)

现在,我必须说我有点困惑.我试图将乘法的行改为

base = a* (int_T)NRBF1;
Run Code Online (Sandbox Code Playgroud)

但它没有解决问题.

任何帮助将不胜感激!谢谢!

c c-preprocessor

-2
推荐指数
1
解决办法
97
查看次数