Kee*_*ath 9 c memory memory-leaks
当我研究一些与内存泄漏相关的东西时,我偶然发现了这个问题.
int* Function()
{
int arrays[10];
/* Some code here */
return &(arrays[0]);
}
Run Code Online (Sandbox Code Playgroud)
作者说上面的代码是有效的,但是返回的内存将被你调用的下一个函数重用,因此相同的内存将用于两个目的.这被称为"悬挂参考"并且可能导致可怕的间歇性故障,或者是老式的"一般保护故障".
如果有人能解释什么是"悬挂参考"和"一般保护错误",那将是很好的
我不知道这些是否是官方解释,但我希望它能为这个例子提供一些更好的含义:
悬挂引用:return 语句返回对数组的引用(指针)。然而,内存在函数关闭后被(或可以)删除,因此存在一个不指向已分配内存的引用,称为挂起引用。
这可能会导致一般保护故障。一般来说,不应该写入未分配的内存。如果您尝试执行此操作,操作系统可能会引发一般保护错误。
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |