networking - 在堆栈上,libev中,为什么默认循环为?

  显示原文与译文双语对照的内容
0 0

 int main()
 {
 struct ev_loop *loop1 = EV_DEFAULT;
 struct ev_loop *loop2 = ev_default_loop(0);
 printf("%ldn%ldn", (long)loop1, (long)loop2);
 return 0;
 }

是,loop1等于 loop2. 但是为什么它们都在堆栈上,而不是堆? 也许ev_default_loop是这样


 int* func()
 {
 int a;
 return &a;
 }

但是函数返回后,它的堆栈被清理。 所以它真的安全?

时间: 原作者:

0 0

EV_DEFAULT可能是全局变量,ev_default_loop也会返回这里变量。 所以堆栈上没有。

另外,使用调用方返回堆栈地址的危险实践。

...