调用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 又是属于可以被随意使用的,所以就出现这样的情况了。
[解决办法]
这种代码很常见,比较不是人自己手动一行行敲汇编指令。