何时收集malloc垃圾分配的内存?

Lyn*_*ite 3 malloc julia

我猜(希望)答案永远不会.必须明确释放这样的内存.

例如,如果我写了:

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.

iva*_*rne 6

是的,你是对的.

Julia旨在与C级别的低级无缝互操作,因此当您使用C包装器库时,您将获得C语义并且不会进行垃圾回收.

Libc.malloc的文档不是为了教授C而编写的,但如果有人感到困惑,可以改进提及Libc.free.