首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用程序集调用HeapAlloc是否需要释放?

使用程序集调用HeapAlloc是否需要释放?
EN

Stack Overflow用户
提问于 2018-12-28 11:42:30
回答 1查看 131关注 0票数 0

在我的程序开始时,我使用HeapAlloc分配内存。当程序结束时,是否有必要释放它,或者这是由系统完成的?

代码语言:javascript
复制
start:
    call   GetProcessHeap
    mov    r11, rax                ; r11 contains handle

    mov    rdi, 8000000
    mov    rsi, 0
    mov    rdx, r11
    call   HeapAlloc        

    mov    r12, rax       ; r12 contains pointer to memory block

    mov    ecx, 1000000
    xor    eax, eax
.looptop_populate
    add    rax, rcx
    mov    [r12+8*rcx-8], rax
    loop   .looptop_populate

    mov    rdi, [r12]
    call   write_uinteger
    xor    eax, eax
    ret

; goasm /x64 /l malloc
; golink /console malloc.obj kernel32.dll

目前,内存似乎是自动释放的,但忽略释放是一种好的方式吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-28 11:51:46

在我的程序开始时,我使用HeapAlloc分配内存。当程序结束时,是否有必要释放它,或者这是由系统完成的?

您所分配的是正在运行的进程内存空间的一部分。当进程终止时,它将不复存在。

目前内存似乎是自动释放的,但忽略释放是一种好的方式吗?

是这样的。当进程终止时,它的地址空间将不再存在。它不可能一直被分配。一般来说,忽略释放并不是一种好的方式,因为这会使代码对较大的程序不可用,并且会使调试内存泄漏变得更加困难。但它实际上不会在进程终止后导致任何泄漏。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53953426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档