关于Perl的undef
时间:2010-12-21
来源:互联网
undef函数的使用:undef EXPR。个人理解是清空EXPR占用的内存的内容。比如:曾在Win32::OLE的Excel使用例子的末尾见到“undef $app_xls”,还是不理解该函数在什么情况下要用到??原来认为对变量而言系统会在函数结束后自动清空变量所占的内存的呀,实在不懂此处为何要手动undef……
作者: lion7beckham 发布时间: 2010-12-21
贴下例子的出处看看。
作者: iambic 发布时间: 2010-12-21
undef实际上可以理解为是变量的一种状态,就跟C/C++中的NULL是一样的。一般情况下,在语言中,以引用或者指针保存变量的情况下比较有用。例如:C中的指针,当将一个具有实际值的指针置为NULL之后,就表示,该指针原来所指向的内容不再使用了,而且,该指针也不在指向任何内容的一种状态;Perl中的变量,简单的说,是使用引用计数器实现的一种变量,所以,在Perl中,你可以从一个函数返回一个看上去像是C中的局部变量的引用:
Perl code
所以,当对一个标量、数组、哈希等置为undef的时候,实际上也表示该变量所关联的内存不再使用了。但究竟需不需要释放内存,还要看引用计数和undef的作用对象。
Perl code
aref=1
a=1
a=
当程序中对一个变量或者对象的引用计数器为0的时候,该变量或者对象所使用的内存将被释放。
Perl code
sub func { my $a=1; return \$a; }
所以,当对一个标量、数组、哈希等置为undef的时候,实际上也表示该变量所关联的内存不再使用了。但究竟需不需要释放内存,还要看引用计数和undef的作用对象。
Perl code
my $aref=func(); my $a=$$aref; print("aref=$$aref\n"); undef $aref; print("a=$a\n"); undef $a; print("a=$a\n");
aref=1
a=1
a=
当程序中对一个变量或者对象的引用计数器为0的时候,该变量或者对象所使用的内存将被释放。
作者: fibbery 发布时间: 2010-12-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28