c/c++语言开发共享从函数返回局部变量

在下面的代码中,我返回一个指向函数内部本地创建的char数组的指针。 因此,当返回值分配给y ,它应该都是垃圾。 当我打印%10s%100s时,这似乎也适用。 但是当我打印%1000s ,我得到的输出似乎让我感到困惑。

 #include  char* get() { char x[1000] ; int i = 0; for(; i < 999; ++i) { x[i] = 'A'; } x[999] = ''; printf("%1000sn",x); return x; } int main() { char* y = get(); printf("Going to printn"); printf("%1000sn",y); } 

输出是 从函数返回局部变量

main()函数访问用于创建本地函数char数组的相同内存位置是巧合还是更具体?

    看看,一旦你使用 get()的返回值,你就会面临未定义的行为 。

    在那之后,没有任何保证。

    换句话说, printf("%1000sn",y);的输出printf("%1000sn",y); ##语句无法certificate 。 它 ,它什么。 未定义。

    FWIW,一旦get()函数执行了finsihed,为该函数分配的堆栈空间将被销毁并可供任何其他函数使用( 如果需要 )。 也许你正在未经授权进入 物理内存的那一部分,但事实并非如此。


    ## – 或, printf("%10sn",y); printf("%100sn",y); 无论如何,无论在何处访问 y

      以上就是c/c++开发分享从函数返回局部变量相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522996.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐