在我的程序开始时,我使用HeapAlloc分配内存。当程序结束时,是否有必要释放它,或者这是由系统完成的?
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目前,内存似乎是自动释放的,但忽略释放是一种好的方式吗?
发布于 2018-12-28 11:51:46
在我的程序开始时,我使用HeapAlloc分配内存。当程序结束时,是否有必要释放它,或者这是由系统完成的?
您所分配的是正在运行的进程内存空间的一部分。当进程终止时,它将不复存在。
目前内存似乎是自动释放的,但忽略释放是一种好的方式吗?
是这样的。当进程终止时,它的地址空间将不再存在。它不可能一直被分配。一般来说,忽略释放并不是一种好的方式,因为这会使代码对较大的程序不可用,并且会使调试内存泄漏变得更加困难。但它实际上不会在进程终止后导致任何泄漏。
https://stackoverflow.com/questions/53953426
复制相似问题