找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1592|回复: 6

[求助] [求助]:lisp怎么管理内存?

[复制链接]
发表于 2002-2-27 15:44:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
lisp怎么管理内存?lisp用管理内存吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-2-27 17:14:57 | 显示全部楼层

Re: [求助]:lisp怎么管理内存?

最初由 lgw 发布
[B]lisp怎么管理内存?lisp用管理内存吗? [/B]



LISP管理内存的能力很强,但有关函数的能力却很弱,如下:

The memory management functions, which follow, are described in more detail in chapter 15, "Memory Management."

(alloc int)
Sets the segment size to a given number of nodes

(expand number)
Allocates node space by requesting a specified number of segments

(gc)
Forces a garbage collection, which frees up unused nodes

(mem)
Displays the current state of AutoLISP's memory

不过,从我的经验看来,这些函数不是主要的解决方法,我基本上不用他们,主要的解决方法是要管理好自己的变量,特别是大数据表变量,具体方面如下:

1 定义函数时,注意属于局部变量的东西一定要写在 "/"的后面,即使有子函数调用它.不要怕麻烦,一般地说,写完程序后要检查.有人就写了自动提取变量的程序.所幸的是,LISP不会发生内存冲突,因此,不必担心内存管理不好而出现死机等问题,但是,变量没有管好极可能发生数据错误或数据类型不对的问题,你很难调式这种错误.因为你早忘了你在另一个程序中使用过的变量的名字(你不可能记得了那么多),或者别人的程序在使用同样的变量,你的程序设计技巧还不能避开别人的同名变量.

2 含有几十个数据项以上的表变量,特别是有些变量可能含有10000个以上的项时,一旦该变量完成使命,立即用 (SETQ XXX NIL)的方式来清除.当排序,检索,过滤时,经常产生大容量变量.如果这些变量不清除,会长期占用内存.当然,加大内存可以解决这类问题,但还是影响性能.

3  定义变量时一定要用有意义的名字,n2 kp7 p u 这些东西谁也看不懂,pt1 pt2的实际意义也不大,而basepoint1 indexlist boxname 缺是不错的变量名.陈伯雄老兄还提倡变量的一些有代表意义的字母进行大写,对于专业程序员,就是要求,对于一般的工程人员,你可以参考使用,但名字一定要有意义,我是有教训的.


好了,这是我的粗浅认识,不知对否.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2002-3-1 11:19:56 | 显示全部楼层
呵呵,高见,一般lsp程序稍长一些,我就随时将不用的变量setq 为nil了
另外,我还有一个不好的习惯,就是一个新的程序在开始时,我喜欢将本程序中
用到的变量首先---》nil!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-3-1 11:30:42 | 显示全部楼层

Re: Re: [求助]:lisp怎么管理内存?

最初由 长清 发布
[B]


LISP管理内存的能力很强,但有关函数的能力却很弱,如下:

The memory management functions, which follow, are descr... [/B]


程序中用到的变量,定义成局部变量,生命期仅仅在函数执行过程中。
如 (defun c:abc (/ xx1 xx2 xx3).....

其中变量xx1,xx2,xx3就仅仅在函数ABC内可见
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-3-6 12:22:20 | 显示全部楼层
有人就写了自动提取变量的程序.  有现成的程序吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-3-6 22:18:38 | 显示全部楼层
最初由 fylinwater 发布
[B]有人就写了自动提取变量的程序.  有现成的程序吗? [/B]


我有程序,我的一哥们写的,不过,我现在不在家,要程序的话先留下电子邮件,过一段时间给你发过去。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 14个

财富等级: 恭喜发财

发表于 2017-6-17 12:59:51 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-12 10:11 , Processed in 0.191265 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表