消耗指针意味着什么?

时间:2012-11-13 20:39:18

标签: c terminology

我是C和Cyclone的新手。我正在通过迈克尔希克斯的论文Experience With Safe Manual Memory-Management in Cyclone工作。

他们说:“我们使用过程内,流动敏感,路径敏感的分析来追踪一个独特的指针 变为消耗,在这种情况下,分析拒绝后续尝试使用指针。我们 选择过程内分析以确保模块化检查和路径不敏感分析以确保 可扩展性。保持分析简单,副本 唯一指针(例如,在赋值或函数中) call)被视为消耗指针。“

“消耗”指针是什么意思?这是一个标准术语吗?

3 个答案:

答案 0 :(得分:4)

他们正在实现C的变体,其中某些指针是唯一的;也就是说,您不能同时拥有同一指针的两个副本。因此,无论何时复制指针(将其指定给另一个变量,将其传递给函数),新副本都被视为有效,旧副本被视为无效。他们称之为“消耗”指针。

在你引用的部分中,在原始论文中,希克斯将这个词“消费”用斜体,表明该用法是他定义意义的用法。 “消耗”指针的定义是在复制指针时跟踪,并拒绝进一步使用它。

此用法基于以前的用法;例如,如果您检查列出的先前对线性类型,别名类型和功能类型的参考,您会发现它们使用类似意义上的“消耗”一词。来自Typed Memory Management in a Calculus of Capabilities:“在线性类型系统中,别名将被轻易控制;任何区域名称的使用都将使用该名称,确保它不能在其他地方使用。”所以这个术语是基于现有的用法,但是本文中仍然需要明确定义,因为Hicks将其应用于C变量中的指针,而不是类型化lambda演算中的名称。

答案 1 :(得分:1)

e.g., in an assignment or function call

指针在作为参数传递给函数时被消耗。

答案 2 :(得分:0)

我认为关键是“后续”这个词,所以使用指针可能意味着任何使用指针的尝试