我有一段代码,我不明白为什么它在使用malloc创建数组时使用shl指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一段代码,我不明白为什么它在使用malloc创建数组时使用shl指令相关的知识,希望对你有一定的参考价值。

我正在尝试理解在x86(MASM程序集)中动态分配内存到1D数组时使用shell指令(SHL)的这段代码。我想知道这个人使用shl指令背后的原因。

code fragment

答案

将一次性移动一次与将其乘以2相同;左移N次与将其乘以2 ** N相同;但是移位通常比实际乘法更快。

对于您展示的代码;它是n乘以sizeof(int)。因为sizeof(int)恰好是4,这意味着它可以向左移动两次(shl eax,2)而不是做(更昂贵的)乘法。

以上是关于我有一段代码,我不明白为什么它在使用malloc创建数组时使用shl指令的主要内容,如果未能解决你的问题,请参考以下文章

结构内的字符串 malloc 溢出

c上的代码崩溃,很可能与malloc有关?

在将数字从文件复制到数组时使用printf的问题

我有这个错误:无法读取 null 的属性“值”,我不明白为啥

为啥 malloc() 和普通数组声明分配的堆栈帧大小不同?

为啥 malloc 返回一个指针?指针有啥用?