我理解内存泄漏的定义,但无法找到任何涉及语义或语义内存泄漏的内容和差异到memory leak。
内存泄漏的示例:
value_low_8bits_cleared = (value | 0xFFu) ^ 0xFFu;
答案 0 :(得分:0)
定义(语义垃圾) 程序将不再使用的变量,但是 仍然保留对它的引用,称为语义垃圾。
换句话说,想象一下在您的主程序中分配一个数组,并仅在前几行以及不释放它之后才使用它。基本上,语义内存泄漏和内存泄漏之间的主要区别在于,在内存泄漏中您没有引用未释放的数组,但是在语义泄漏中您实际上已引用了它,尽管您不再使用它。
答案 1 :(得分:0)
定义 (语义垃圾)
程序不再使用的变量,但是 仍然保留对它的引用,称为语义垃圾。
class Huge {
Huge() { // Constructor:
// Allocates lots of data and stores
// it in the newly created object
}
}
void f() {
Huge semanticGarbage = new Huge();
heavy.computation(new Indeed(100));
System.exit(1);
}
所有复杂的GC算法都徒然反对语义垃圾。
参考: Technion CS 234319:编程语言课程
(讲座)第5章存储 5.5 自动内存管理-语义内存泄漏