feat(lifetime): stdlib.free 标注 @life(willFree(p)),声明实参在调用后失效
P2 标注驱动:编译器据此把调用点对应实参变量标为已失效,其后读/传/再 free 报 LifetimeError。
This commit is contained in:
1 parent
770e389360
commit
bfc773787d
1 file changed
+8
-8
@@ -1,10 +1,10 @@
|
||||
from stdint import *
|
||||
import t
|
||||
|
||||
|
||||
extern def malloc(size: sizet) -> t.CPtr
|
||||
extern def calloc(nmemb: sizet, size: sizet) -> t.CPtr
|
||||
extern def realloc(p: t.CPtr, size: sizet) -> t.CPtr
|
||||
extern def free(p: t.CPtr)
|
||||
extern def malloc(size: sizet) -> rawptr
|
||||
extern def calloc(nmemb: sizet, size: sizet) -> rawptr
|
||||
extern def realloc(p: rawptr, size: sizet) -> rawptr
|
||||
# P2 生命期标注:被标注的形参所指对象在**本调用返回后失效**(由被调用者释放/接管)。
|
||||
# 调用点据此把对应实参变量槽标为"已失效",其后读/取址/再传 → LifetimeError(fail-fast)。
|
||||
# 写法二选一:形参名 willFree(p) 或形参位置序号 willFree(0)(0 起,self/cls 计入)。
|
||||
@life(willFree(p))
|
||||
extern def free(p: rawptr)
|
||||
extern def system(cmd: const str) -> int
|
||||
extern def exit(status: int)
|
||||
Reference in new issue
Block a user