我猜(希望)答案永远不会.必须明确释放这样的内存.
例如,如果我写了:
julia> x = Libc.malloc(1_000_000)
Ptr{Void} @0x0000000002f6bd80
julia> x = nothing
Run Code Online (Sandbox Code Playgroud)
我刚刚泄露了大约1MB的内存吗?
但是我并不是100%肯定这是真的,因为文档根本没有提到它.
help?> Libc.malloc(3)
malloc(size::Integer) -> Ptr{Void}从C标准库调用malloc.
是的,你是对的.
Julia旨在与C级别的低级无缝互操作,因此当您使用C包装器库时,您将获得C语义并且不会进行垃圾回收.
Libc.malloc的文档不是为了教授C而编写的,但如果有人感到困惑,可以改进提及Libc.free.