- 5 名前:デフォルトの名無しさん mailto:sage [2012/01/14(土) 11:01:18.98 ]
- タブスペースで書き込んじまった
int main() { char* str1[10]; //定義しただけで初期化していない。つまり文字列は格納されていない。 func1( &str ); } void func1( char* str ) { char* inStr = "test"; inStr = anotherFunc() ; str = inStr + 1 ; return ; } 質問なんだが。 なぜ、きちんとstrに文字データが格納されるんだろうか? main 関数でstr のポインタ領域は確保されているが、その参照先の文字列領域は未確保。 func1にとんだ先では、自動変数inStr に文字列が格納されており、そのポインタを渡すことでstrの中身に具体的なポインタが入る。 func1内では、str のポインタの指し示す先は自動変数inStrと同じポインタであり、参照できて当然。 ところが、return すると、自動変数inStr の内容はスタックを戻すことにより開放されている。 return された後にmainにてstrを参照しても全く問題ないし、キチンと値が格納されている。 値が参照できるのは、たまたまナノか? この操作は問題ない?
|

|