当前位置: 代码迷 >> 汇编语言 >> 调用C++ 里new操作符的一个疑点
  详细解决方案

调用C++ 里new操作符的一个疑点

热度:9317   发布时间:2013-02-26 00:00:00.0
调用C++ 里new操作符的一个疑问
如下红字部分的两句,是否多余啊?
而且似乎是相当于来回自己赋给自己一个值

char* p = new char[5];
0041140E  push        5    
00411410  call        operator new (4111A4h) 
00411415  add         esp,4 
00411418  mov         dword ptr [ebp-0E0h],eax 
0041141E  mov         eax,dword ptr [ebp-0E0h]
 
00411424  mov         dword ptr [p],eax
------解决方案--------------------------------------------------------
这是编译器优化不够吧,将 new 和赋值两个功能割裂了独自操作,而 eax 又是属于可以被随意使用的,所以就出现这样的情况了。
------解决方案--------------------------------------------------------
这种代码很常见,比较不是人自己手动一行行敲汇编指令。
  相关解决方案