#include<stdio.h>
int * display();
main()
{
printf("\nHello\n");
int * a = display();
printf("%d", *a);
}
int * display()
{
printf("\n Hi \n");
int b = 10;
return &b;
}
メモリ割り当てがどのように動作しますか?cでメモリ割り当てはどのように機能しますか?
私はこのプログラムのbの値にアクセスできると確信していますが、なぜそのアドレスにアクセスできないのですか?私はエラーが発生します(セグメンテーションフォルト)。
背後にあるコンセプトは何ですか?
私は初心者です。
機能は、機能を出た後、生きていないだろうローカル変数へのポインタを返すためのプログラムは、未定義の動作をしています。 –
これを読んでください:[ローカル変数へのポインタ](http://stackoverflow.com/questions/4570366/pointer-to-local-variable)。 – Lundin
AFAIKこれは、この問題に関してSO上で最も多く閲覧されています。それは 'C++ 'とタグ付けされていますが、コンセプトは同じです。そして、それはEric Lippertから幾分実用的で楽しい類推があります:http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-アクセスされた範囲外/ 6445794#6445794 – yano