エラー辞典

MemoryError

プログラムが使えるメモリ(作業用の記憶領域)が足りなくなったときに発生するエラーです。

原因

非常に大きなリストや配列を一度に作ろうとしたり、無限ループの中でデータを増やし続けたりすることが原因です。

エラーになるコード例

# 非常に大きなリストを一度に作ろうとする例(環境によってはMemoryErrorになる)
huge_list = [0] * (10 ** 12)
MemoryError

修正版

# 一度に全部作らず、必要な分だけ順番に処理する(ジェネレータの活用など)
def generate_numbers(n):
    for i in range(n):
        yield i

for num in generate_numbers(10):
    print(num)

よくある間違い

  • 本来は少しずつ処理すればよいデータを、一度にすべてメモリ上に載せようとしてしまう
  • 無限ループやバグにより、リストや辞書にデータが際限なく追加され続けてしまう

← エラー辞典に戻る