我了解堆栈框架。但是如果我是对的,在调用函数之前,该函数的参数将被推入堆栈框架。

例如,

int main(void)
{
  printf("hi everyone %d \n", 3);
  return 0;
}


在这种情况下,在主堆栈框架中,“大家好%d \ n”的地址和3应该被压入,然后调用printf(如果我是对的)。

但是当我使用gdb时没有这样的指令。

我正在研究字符串格式漏洞。但是我上面写的没有发生。我怎么了

最佳答案

本文有关GCC compiler can optimize code to replace some types of call with equivalent, but not identical, operations如何提供帮助。

您提供的示例将是此类优化的主要目标。

10-06 06:52