设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 3694260ac
打印 上一主题 下一主题

新人初到,写了一些小脚本,问些问题,谢谢!!!

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-4-19
帖子
15
21
发表于 2008-5-17 20:45:22 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
22
 楼主| 发表于 2008-5-17 20:58:46 | 只看该作者
我的for i in 0...@num在不断调用时,会不断增加内存,这个内存的增长量还是满大的,最终导致程序崩溃,正常来说应该申请多少内存给i这个局部变量后应该释放,然而while却没这个问题,令我很奇怪

可以看:
class Map
def initialize
   @devil = Sprite.new
   @devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
   @devil.ox = -100
   @devil.oy = -100
   @num = 1000
end
def input
   if Input.press?(Input::DOWN)
     @devil.oy -= 1
     refresh
   end
   if Input.press?(Input::UP)
     @devil.oy += 1
     refresh
   end
   if Input.press?(Input::LEFT)
     @devil.ox -= 1
     refresh
   end
   if Input.press?(Input::RIGHT)
     @devil.ox += 1
     refresh
   end
end
def refresh
   for i in 0...@num
   end
end
end
@map = Map.new
loop do
Graphics.update
@map.input
Input.update
end

@num小一些没问题,但是按键移动后看任务管理器Game.exe的内存占用量在增加,改while后不会有问题
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
23
 楼主| 发表于 2008-5-17 21:05:11 | 只看该作者
以下引用靈魂の淚水于2008-5-17 12:45:22的发言:

LZ是新手我就去撞墙~~!你一个中午就看会了XP的脚本 - -,果然强人太多了……

我之前用win32下的尝试做,做得有点崩溃,刚好看到这个代码风格比较好,于是就看了看,其实就看了帮助信息以及人物位图,地图这些,没有涉及战斗,数据之内的
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

24
发表于 2008-5-17 21:07:25 | 只看该作者
我看到你用
loop do
  for i in @num
  end
  p i
end
|||
這樣就等於10倍的loop do...不爆炸才怪啦|||
loop do 是無限循環啊...
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
25
 楼主| 发表于 2008-5-17 21:09:21 | 只看该作者
所以给他来一个p i中断一些循环啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
26
 楼主| 发表于 2008-5-17 21:10:24 | 只看该作者
这样就可以动态的看内存的增长/........
回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3133
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

27
发表于 2008-5-17 21:11:51 | 只看该作者
空循环比有代码的循环更加占用内存和CPU。关于程序崩溃,个人认为,应该是i的生命周期应该一直到def的end为止,这样又因为外面套着loop,因而有N个i在内存内被申请,最终导致程序崩溃。
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

28
发表于 2008-5-17 21:12:02 | 只看该作者
p 是不會中斷循環的...
p 只是輸出數據,循環所産生的數據還在內存當中沒有釋放啊...而且你不覺得 for i in 0..10就很浪費內存了嘛?
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
29
 楼主| 发表于 2008-5-17 21:14:18 | 只看该作者
以下引用IamI于2008-5-17 13:11:51的发言:

空循环比有代码的循环更加占用内存和CPU。关于程序崩溃,个人认为,应该是i的生命周期应该一直到def的end为止,这样又因为外面套着loop,因而有N个i在内存内被申请,最终导致程序崩溃。

很有道理!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
6 小时
注册时间
2008-5-17
帖子
29
30
 楼主| 发表于 2008-5-17 21:16:01 | 只看该作者
问题就这样把,总的来说,谢谢各位了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-29 23:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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