什么是"悬挂参考"和"一般保护故障"?

Kee*_*ath 9 c memory memory-leaks

当我研究一些与内存泄漏相关的东西时,我偶然发现了这个问题.

int* Function()

{

   int arrays[10];

     /* Some code here */

   return &(arrays[0]);

}
Run Code Online (Sandbox Code Playgroud)

作者说上面的代码是有效的,但是返回的内存将被你调用的下一个函数重用,因此相同的内存将用于两个目的.这被称为"悬挂参考"并且可能导致可怕的间歇性故障,或者是老式的"一般保护故障".

如果有人能解释什么是"悬挂参考"和"一般保护错误",那将是很好的

Mic*_*ers 2

我不知道这些是否是官方解释,但我希望它能为这个例子提供一些更好的含义:

悬挂引用:return 语句返回对数组的引用(指针)。然而,内存在函数关闭后被(或可以)删除,因此存在一个不指向已分配内存的引用,称为挂起引用。

这可能会导致一般保护故障。一般来说,不应该写入未分配的内存。如果您尝试执行此操作,操作系统可能会引发一般保护错误。