什么是语义记忆泄漏?

时间:2018-06-18 15:49:26

标签: memory memory-leaks storage heap-memory definition

我理解内存泄漏的定义,但无法找到任何涉及语义语义内存泄漏的内容和差异到memory leak

内存泄漏的示例

value_low_8bits_cleared = (value | 0xFFu) ^ 0xFFu;

2 个答案:

答案 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 自动内存管理-语义内存泄漏