此代码片段基于 Pygame 备忘单(此处)中的代码。
wht_pix = pygame.Color(0xff,0xff,0xff)
blu_pix = pygame.Color(0x00,0x00,0xff)
pixArr = pygame.PixelArray(self.surface)
for y in xrange(0,self.hgt):
for x in xrange(0,self.wid):
if self.grid[x][y]==1:
pixArr[x][y] = blu_pix
else:
pixArr[x][y] = wht_pix
del pixArr # this line doesn't seem to affect anything
pygame.display.update()
我可以理解你为什么要删除 pixArr 数组,它实际上只是一个临时数组,用作表面缓冲区像素的接口。但是,top
在我的程序上运行表明内存消耗缓慢增长。删除 pixArr 代码块消除了内存问题,所以它肯定发生在这个代码块中。特别删除该del PixArr
行似乎使程序以完全相同的方式运行(内存消耗增加),这在某种程度上暗示它在包含时并没有真正释放内存。
我的假设有什么问题?如何修复内存泄漏?