C:什么时候清除功能栈?

时间:2019-05-15 10:24:21

标签: c++ c

我写了以下代码

#include "stdio.h"

struct node {
    int x;
    int y;
};
typedef struct node Node;

Node * f() {
    Node node = {1, 2};
    return &node;
}

int main() {
    Node *node = f();
    printf("(%d, %d)", node->x, node->y);
    printf("(%d, %d)", node->x, node->y);
}

在编译期间,我收到warning: address of stack memory associated with local variable 'node' returned警告。

但是,printf

  • 第一次打印正确的结果
  • 第二次打印错误的结果

这使我想到了一个问题:确切的时间是否清除了对f()的调用堆栈?

0 个答案:

没有答案