重複の可能性:
ローカル変数のメモリにそのスコープ外でアクセスできますか?
したがって、単純な c++ 関数を次に示します。何をするか 引数として文字の配列と整数 n を取り、配列の n 要素だけで新しい文字配列を作成します。
char * cutString(char * ch , int n){
char * p = new char[n];
int i ;
for(i = 0 ; i < n ; i++)
p[i] = ch[i];
while(i <= n ){
p[i++] = '\0';
}
return p ;
}
これは問題なく動作しますが、変更char * p = new char[n];
するchar p[n];
と面白い文字が表示されます。何が起こるのですか?前者はどのような違いがありますか?また、p は一時変数です。関数はどのようにそれを正常に返しますか?