以下是IDA生成的一段伪代码:
void *__cdecl sub_5733F0(void *a1, int a2)
{
void *result; // eax
result = operator new(0x170u, a1);
上面的new为何还多了一个参数a1?
查看对应的汇编:
mov eax, [ebp+arg_0]
push eax ; void *
push 170h ; unsigned int
call ??2@YAPAXIPAX@Z ; operator new(uint,void *)
没有找到被折叠的"??2@YAPAXIPAX@Z"的代码。
在IDA的用户界面中查看sub_5733F0:

双击其中的"new",出现:

原来这个new函数只是返回a2啊!
因此,把上述伪代码改为:
result = a1;//operator new(0x170u, a1);