我试图跟踪valgrind的段错误.我从valgrind得到以下消息:
==3683== Conditional jump or move depends on uninitialised value(s)
==3683== at 0x4C277C5: sparse_mat_mat_kron (sparse.c:165)
==3683== by 0x4C2706E: rec_mating (rec.c:176)
==3683== by 0x401C1C: age_dep_iterate (age_dep.c:287)
==3683== by 0x4014CB: main (age_dep.c:92)
==3683== Uninitialised value was created by a stack allocation
==3683== at 0x401848: age_dep_init_params (age_dep.c:131)
==3683==
==3683== Conditional jump or move depends on uninitialised value(s)
==3683== at 0x4C277C7: sparse_mat_mat_kron (sparse.c:165)
==3683== by 0x4C2706E: rec_mating (rec.c:176)
==3683== by 0x401C1C: age_dep_iterate (age_dep.c:287)
==3683== by 0x4014CB: main (age_dep.c:92)
==3683== Uninitialised value was created by …Run Code Online (Sandbox Code Playgroud) 我有一个科学的应用程序,我想在运行时输入初始值.我可以选择从命令行获取它们,或者从输入文件中获取它们.这些选项中的任何一个都输入到通用解析器,该解析器使用strtod返回每个模拟运行的初始值的链接列表.我要么使用命令行参数,要么使用getline()来读取值.
问题是,我应该滚动自己的解析器,还是应该使用解析器生成器或某个库?什么是标准方法?这是我将在运行时读取的唯一数据,其他所有数据都在编译时设置(输出文件和其他一些非常简单的东西除外).
谢谢,
乔尔