public main
main proc near
push ebp
mov ebp, esp
and esp, 0FFFFFFF0h
sub esp, 30h
mov dword ptr [esp], 8 ; size
call _malloc
mov [esp+2Ch], eax
mov dword ptr [esp+4], 4
mov eax, [esp+2Ch]
mov [esp], eax
call __start
Run Code Online (Sandbox Code Playgroud)
上面的代码代表了我正在处理的大型项目的一部分.我试图将此代码转换为C等效,但我很难理解malloc如何工作.
我估计8个字节将是被分配的内存的大小; 但是,我不确定这条线.
mov eax, [esp+2ch]
Run Code Online (Sandbox Code Playgroud)
malloc对eax做了什么?
那么这是等效的C代码吗?
int main(void)
{
int *ptr1;
ptr1 = (int *)malloc(sizeof(8));
*ptr1 = 4;
__start(*ptr1);
Run Code Online (Sandbox Code Playgroud)