装配框架是否重叠?

时间:2017-05-13 19:25:57

标签: c gcc

背景

typedef struct Result {
  int type;
  union {
    Err err;
    Table tbl;
   };
} Result;

typedef struct Err {
  int status;
  String command;
  String err;
} Err;


Result *getres(...) {
  ....

  return &(Result) {....};
}

void somefun(..) {
  ...
  Result *res = getres(..);
  // (A)
  handleres(res);
}

void handleres(Result *res) {
  // (B)
  ...
}

(A)在A点,res有从getres传递的预期数据,但是点(B)有不同的数据,并且调试代码视图,大多数res元素指针都有相同的res !!指针,而不仅仅是第一个元素,除了一个元素res-> err-> err;

装配意义上的

getres返回指向eax中本地Result的指针,该指针可以跨越-start(ebp)到getres例程的-end(ebp)。

问题

动态分配有效,但为什么静态定义的结构指针表现那样,汇编帧是否被使用,-start(ebp),-end(ebp)被覆盖?

0 个答案:

没有答案