Почему Malloc перезаписать RSP и RSP +8 ?

Вы можете прочитать о 64-разрядных calling convention здесь. 64 функции должны убирать за собой, однако, когда я называю malloc от .asm, она перезаписывает значение на RSP и RSP 8. Это, кажется, очень неправильно. Какие будут предложения?

public TestMalloc

extern malloc : near

.CODE

align 8
TestMalloc proc
    mov rcx, 100h
    000000018000BDB8 48 C7 C1 00 01 00 00   mov         rcx,100h 

    call malloc
    000000018000BDBF E8 CC AC 06 00         call        malloc (180076A90h) 

    ret
    000000018000BDC4 C3                     ret              
    000000018000BDC5 66 66 90               xchg        ax,ax 
TestMalloc endp

END

Найдено 2 ответа:

Why does malloc overwrite RSP and RSP+8?

http://stackoverflow.com/questions/387145/why-does-malloc-overwrite-rsp-and-rsp8

Посмотреть решение →