赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 469 |
最后登录 | 2021-2-21 |
在线时间 | 6 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 110
- 在线时间
- 6 小时
- 注册时间
- 2008-5-17
- 帖子
- 29
|
8楼

楼主 |
发表于 2008-5-17 03:53:50
|
只看该作者
我发现了一些现象:
如果用代码:
class Map
def initialize
@devil = Sprite.new
@devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
@devil.ox = -100
@devil.oy = -100
@num = 10
@i = 0
end
def input
if Input.press?(Input::DOWN)
@devil.oy -= 1
@i = 0
while @i < @num
@i += 1
end
end
if Input.press?(Input::UP)
@devil.oy += 1
@i = 0
while @i < @num
@i+= 1
end
end
if Input.press?(Input::LEFT)
@devil.ox -= 1
@i = 0
while @i < @num
@i+= 1
end
end
if Input.press?(Input::RIGHT)
@devil.ox += 1
@i = 0
while @i < @num
@i+= 1
end
end
end
def refresh
end
end
@map = Map.new
loop do
Graphics.update
@map.input
Input.update
end
其中变化的是for变成while,结果按键不会使内存增大,这和i是局部变量或者实变量没关系,初步断定for给i(或者i的一个映射)分配了内存,但是多次调用时并没有完全释放内存,导致内存增大,感觉这种现象很奇怪,感觉不应该发生在编译器上
附带一个小程序:
@num = 10
loop do
for i in 0...@num
end
p 1
end
不断点空格会发现内存也在增大,这说明和Input没什么关系,很可能是内部处理时没处理好,把for改成while并不会出现这个问题
PS :我不知道是不是就我有这种现象!!!!!!!!!!!!! |
|