在64位NASM,我使用的malloc()从C库分配的8000个字节的存储块,并当我完成它,我通过调用自由释放它()。
我的研究也得出了很多关于如何做到这一点,在64位NASM相互矛盾的信息,并且大部分的信息是32位,其中调用约定是不同的,或者它的C或C ++,不NASM。
我想我有malloc的部分权利,但我不知道自由的一部分。 我张贴这个问题,因为我不想测试,并有一个内存块已分配但未被释放。
所以我的两个问题很简单:
(1)我有这个权利对于64位NASM?
(2)语法相同的Windows和Linux?
我只显示了malloc和我的程序的免费部分:
extern malloc
extern free
push rdi
; Allocate the memory buffer
mov rdi,8000
call malloc
mov [array_pointer],rax ;array_pointer is initialized in .data
; Code that uses the buffer goes here.
; Free the memory buffer
push rdi
call free
add rsp,8
pop rdi
ret