tst220.mal
来自「一个内存数据库的源代码这是服务器端还有客户端」· MAL 代码 · 共 70 行
MAL
70 行
# a test checking BAT reference counting under various situationsfunction steal(bb:bat[:any_1,:any_2]) :bat[:any_1,:any_2]; i:= bbp.getLRefCount(bb); io.printf("enter function refcount =%d[2,3]\n",i); loc:= bb; i:= bbp.getLRefCount(bb); io.printf("local in function refcount =%d[3,4]\n",i); return bb;end steal; function createone():bat[:int,:str]; b:= bat.new(:int,:str); return b;end createone; b:= bat.new(:int,:str); i:= bbp.getLRefCount(b); io.printf("refcount =%d[1]\n",i); bat.insert(b,1,"bat B"); io.print(b); i:= bbp.getLRefCount(b); io.printf("refcount =%d[1]\n",i); #handle an alias, which isn;t used! b2:= b; i:= bbp.getLRefCount(b); io.printf("after assignment refcount =%d[2]\n",i); #re-use a bat variable b3:= b; cnt:= aggr.count(b3); # forced use i:= bbp.getLRefCount(b); io.printf("after 2nd assignment refcount =%d[3]\n",i); #re-use a bat variable b3:= user.createone(); i:= bbp.getLRefCount(b); io.printf("after 3rd assignment refcount =%d[2]\n",i); i:= bbp.getLRefCount(b3); io.printf("assignment refcount =%d[1]\n",i); #re-use a bat variable b4:= algebra.select(b,"bat C","bat C"); io.print(b4); i:= bbp.getLRefCount(b); io.printf("after 4rd assignment refcount =%d[2]\n",i); # remove by assignment b2:= b3; i:= bbp.getLRefCount(b); io.printf("after 5rd assignment refcount =%d[1]\n",i); io.printf("call function\n"); d:= user.steal(b); i:= bbp.getLRefCount(b); io.printf("return from function refcount =%d[2]\n",i); io.printf("check self replacement, overrule refcount!\n"); b:= user.steal(b); i:= bbp.getLRefCount(b); io.printf("return from function refcount =%d[2]\n",i); z:= bbp.getRefCount(); zl:= bbp.getLRefCount(); zn:= bbp.getNames(); io.print(zn,z,zl);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?