簡體   English   中英

消耗指針是什么意思?

[英]what does it mean to consume a pointer?

我是C和Cyclone的新手。 我正在通過Michael Hicks的論文《 Cyclone中的安全手動內存管理的經驗 》進行工作。

他們說:“我們使用過程內,流程敏感,路徑不敏感的分析來跟蹤何時消耗了唯一的指針,在這種情況下,該分析拒絕了隨后使用該指針的嘗試。我們選擇了過程內分析,以確保進行模塊化檢查和路徑不敏感的分析以確保可伸縮性。為使分析簡單,將唯一指針的副本(例如,在賦值或函數調用中)視為消耗了指針。”

“消耗”指針是什么意思? 這是一個標准術語嗎?

他們正在實現C的變體,其中某些指針是唯一的。 也就是說,您不能同時擁有同一指針的兩個副本。 因此,每當您復制一個指針(將其分配給另一個變量,並將其傳遞給函數)時,新副本均被視為有效,而舊副本則被視為無效。 他們稱此為“消耗”指針。

在您引用的部分中,在原始論文中,Hicks用斜體將該單詞“ consume”(斜體)傾斜,表示該用法是他在其中定義含義的用法。 指針被“消耗”的定義正在跟蹤指針被復制的時間,並拒絕對其的進一步使用。

此用法基於先前的用法; 例如,如果您檢查關於線性類型,別名類型和功能類型的先前工作列出的參考,您將在類似意義上使用單詞“ consume”來找到它們。 來自功能演算中的類型化內存管理 :“在線性類型系統中,別名將得到微不足道的控制;對區域名稱的任何使用都會消耗該名稱,從而確保不能在其他地方使用它。” 因此,該術語基於現有用法,但是在本文中仍需要闡明確切的定義,因為希克斯將其應用於C變體中的指針,而不是類型化的Lambda演算中的名稱。

e.g., in an assignment or function call

當指針被分配或作為參數傳遞給函數時,將消耗該指針。

我認為關鍵是“后續”一詞,因此使用指針可能意味着任何嘗試使用指針的嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM