<p>初始化数组时出现分段错误。你知道吗</p>
<p>当读到RFID标签时,我有一个回调函数</p>
<pre><code>IDS = []
def readTag(e):
epc = str(e.epc, 'utf-8')
if not epc in IDS:
now = datetime.datetime.now().strftime('%m/%d/%Y %H:%M:%S')
IDS.append([epc, now, "name.instrument"])
</code></pre>
<p>一个调用它的主函数</p>
<pre><code>def main():
for x in vals:
IDS.append([vals[0], vals[1], vals[2]])
for x in IDS:
print(x[0])
r = mercury.Reader("tmr:///dev/ttyUSB0", baudrate=9600)
r.set_region("NA")
r.start_reading(readTag, on_time=1500)
input("press any key to stop reading: ")
r.stop_reading()
</code></pre>
<p>由于行<code>IDS.append([epc, now, "name.instrument"])</code>而发生错误。我知道,因为当我用一个print调用代替它时,程序就可以正常运行了。我尝试过对数组对象(整数)使用不同的类型,在append函数外创建一个相同对象的数组,等等。出于某种原因,仅仅在“readTag”函数内创建一个数组会导致像<code>row = [1,2,3]</code>这样的分段错误</p>
<p>有人知道是什么原因导致了这个错误,我可以如何修复它吗?更具体地说,readTag函数在前两次(只有两次)调用中可以正常工作,但随后它崩溃了,具有start_reading()函数的Reader对象来自mercury api</p>