关闭。这个问题需要debugging details .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
6年前关闭。
Improve this question
我对 C 编程很陌生,遇到了一个奇怪的问题。我有一个全局变量 三 这是一个具有几个成员的结构(tri_fact)。其中两个成员( tri .Q 和 tri .R)又是密集矩阵的另一种结构(dense_mat)。
我有一个函数可以将这些密集矩阵中的一些初始化为零。我遇到的问题是这些矩阵之一在退出初始化函数时具有垃圾值。然而,就在退出之前,一切看起来都很好。
struct tri_fact tri;
void init_func(){
/*do some initializations*/
/*tri.Q and tri.R looks good*/
}
void func(){
init_func();
/* tri.R looks good, but tri.Q is filled with junk */
}
我错过了一些基本的东西吗?
最佳答案
您应该了解的基本概念是 undefined behavior .见 this明白这是严重的。阅读来自 here 的引用资料.
您是否使用所有警告和调试信息编译了整个程序(所有代码)?与 GCC -例如。在 Linux 上 - 这意味着 gcc -Wall -Wextra -g
.
那你应该使用调试器 (在 Linux 上为 gdb
)并且可能使用 watchpoints .也许禁用 ASLR可能值得找到你的错误。
与最近的 GCC您也可以使用各种 -fsanitize=
选项,特别是用 -fsanitize=address
编译. valgrind工具也可能非常有用。
关于c - 退出函数 C 时全局变量更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31346651/