我在Python中有一个非常简单的脚本,但由于某种原因,在运行大量数据时出现以下错误:
*** glibc detected *** python: double free or corruption (out): 0x00002af5a00cc010 ***
Run Code Online (Sandbox Code Playgroud)
当我试图释放已经释放的内存时,我习惯于在C或C++中出现这些错误.但是,通过我对Python的理解(特别是我编写代码的方式),我真的不明白为什么会这样.
这是代码:
#!/usr/bin/python -tt
import sys, commands, string
import numpy as np
import scipy.io as io
from time import clock
W = io.loadmat(sys.argv[1])['W']
size = W.shape[0]
numlabels = int(sys.argv[2])
Q = np.zeros((size, numlabels), dtype=np.double)
P = np.zeros((size, numlabels), dtype=np.double)
Q += 1.0 / Q.shape[1]
nu = 0.001
mu = 0.01
start = clock()
mat = -nu + mu*(W*(np.log(Q)-1))
end = clock()
print >> sys.stderr, "Time taken to …Run Code Online (Sandbox Code Playgroud)