【问题标题】:Is it safe to return an array created in a function in Julia返回在 Julia 的函数中创建的数组是否安全
【发布时间】:2017-08-04 12:45:46
【问题描述】:

我正在 Julia 中做这样的事情:

function(params)
  vector = Float64[]
  .
  .
  push!(vector, something)
  .
  .
  return vector
end

这样做是否安全,或者分配的内存会被释放吗? 我的程序有效,是意外吗?

将向量作为参数传递给函数是否更安全

function(params, vector)
  .
  .
end

谢谢

【问题讨论】:

  • 两种方式都应该有效。如果您确实将向量作为输入传递给函数,然后就地修改它,则惯例是在函数名称后附加感叹号。例如,normalize 返回输入向量的标准化副本,而normalize! 就地更新输入向量。
  • 是的,它是安全的。所有 Julia 数组都分配在堆上。

标签: arrays function scope return julia


【解决方案1】:

这是安全的。当你做类似的事情时

newvector = function(params)

变量newvector 仍然引用您在函数中创建的数组,因此不会被垃圾回收。

【讨论】:

  • 此外,确保安全正是编程语言中存在垃圾收集的原因。
猜你喜欢
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多