コメント

このコメントは、【CoR】配列のお話【フリーズ問題】へのコメントです。

コメントの内容

Cdv30200 aoi icon mini aoihikawa(投稿日:2021/03/02 16:03/02/21)
おまけの話

外部関数で作られた配列も
関数を抜けただけでは削除されずに残るようです

↓フリーズする
def hairetsu()
  # 配列生成
  arry = [0]*500000
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    hairetsu()
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"


↓フリーズしない(その1)
def hairetsu()
  # 配列生成
  arry = [0]*500000
  arry.clear #明示的に開放する
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    hairetsu()
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"


↓フリーズしない(その2)
def hairetsu()
  # 配列生成
  arry = [0]*500000
  return arry #配列を戻り値にしたい
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    arr = hairetsu()
    arr.clear #使用後に明示的に開放する
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"

コメントの内容(一番最初の投稿)

Cdv30200 aoi icon mini aoihikawa(投稿日:2021/03/02 16:03/02/21)
おまけの話

外部関数で作られた配列も
関数を抜けただけでは削除されずに残るようです

↓フリーズする
def hairetsu()
  # 配列生成
  arry = [0]*500000
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    hairetsu()
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"


↓フリーズしない(その1)
def hairetsu()
  # 配列生成
  arry = [0]*500000
  arry.clear #明示的に開放する
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    hairetsu()
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"


↓フリーズしない(その2)
def hairetsu()
  # 配列生成
  arry = [0]*500000
  return arry #配列を戻り値にしたい
end

scene 'start' do
  i = 0
  
  update do
    # 配列生成
    arr = hairetsu()
    arr.clear #使用後に明示的に開放する
    
    i += 1
    debug_log "配列生成回数:#{i}"
  end
end

# シーンを開始する
start_scene "start"