int main()
{
struct ev_loop *loop1 = EV_DEFAULT;
struct ev_loop *loop2 = ev_default_loop(0);
printf("%ld\n%ld\n", (long)loop1, (long)loop2);
return 0;
}
是的,loop1等于loop2。但为什么他们都在堆栈上,而不是堆? 并且,也许ev_default_loop是这样的,
int* func()
{
int a;
return &a;
}
但是在func返回后,它的堆栈已经被清理掉了。那真的很安全吗?
答案 0 :(得分:0)
EV_DEFAULT可能是全局变量,ev_default_loop也会返回此变量。所以,没有堆栈。
另外,对于调用者使用返回堆栈地址采取危险的做法。