困るのでもう一度トピック建てさせて下さい。
void charTest(char** str){
char *p = "charTest"; //これはOK
//char p[]="charTest"; //これはNG
*str = p;
}
int _tmain(int argc, _TCHAR* argv[])
{
char* cMoji = "main";
charTest(&cMoji);
std::cout << cMoji << "\n";
return 0;
}
charTest内で、
char*のポインタ型で自動変数を作成すると、main関数での出力は「charTest」と表示されますが、
char型の配列で自動変数を作成すると、main関数での出力は 不定のランダムな文字列 が表示されます。
関数を抜けたら、自動変数はメモリから削除されるので、不定な文字列が表示されるのが
当然かなと思ったのですが、なぜポインタ変数は関数を抜けても残っているのでしょうか?