There appears to be a bug in PixelArray.
The following code replicates the memory leak by setting a single pixel each loop, and you don't even have to update the display to cause the problem:
import pygame, sys
from pygame.locals import *
ScreenWidth, ScreenHeight = 640, 480
pygame.init()
Display = pygame.display.set_mode((ScreenWidth,ScreenHeight), 0, 32)
pygame.display.set_caption('Memory Leak Test')
while True:
PixelArray = pygame.PixelArray(Display)
PixelArray[ScreenWidth-1][ScreenHeight-1] = (255,255,255)
del PixelArray
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#pygame.display.update()
If you can handle the performance hit, replacing direct pixel setting with (very short) lines avoids the memory leak, ie: pygame.draw.line(Display, Colour, (X,Y), (X,Y), 1)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…