c c++ 函数不要返回局部变量的指针

结论:普通的变量(非new的变量)都是系统自动分配的,在栈空间(连续分配),无需程序员操作,速度快,但是...空间有限,不适合大量数据,大量的话就需要自己new

new出来的变量是处于大容量的堆空间,分配方式可能类似与链表,当然,速度会慢

在主函数中,如果定义的数组较大,所需空间较大,大概是10的6次方那么多,可能会出错,因为函数内部申请的局部变量,来自于系统的栈空空间,空间可能不够

局部变量中的a数组,在栈中分配了空间,存了0,1,2等数据,函数结束后,返回的地址也确实给了main函数中的p变量,但该内存空间里可能已经没有东西了,比较危险

可能你试一试还是能访问到数据,但那只是没有释放,可能在下一个定义的局部变量又用到了该空间,数据覆盖,就没了。

int * F1()

{

  int  a[10]={0,1,2};

  return a;

}

int main()

{

  int * p =F1();

  cout<<p[0];//危险

}

原文链接: https://www.cnblogs.com/lxzbky/p/10459288.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c c++  函数不要返回局部变量的指针

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/400220

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月14日 上午9:47
下一篇 2023年4月14日 上午9:47

相关推荐