我对这两种情况之间的差异感兴趣:
int *function() {
int i = 5;
return &i;
}
和
int *function() {
int *i = calloc(1, sizeof(int));
*i = 5;
return i;
}
有区别吗?如果是这样,有人可以解释后台发生了什么吗?
是,有一点不同。在第一种情况下,整数i在堆栈上分配,这意味着在函数返回时它将被重用。在第二种情况下,内存是在堆上分配的,不会在函数调用之外被覆盖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句