const char* test(bool i)
{
const char t[] = "aa\n";
const char* p = "bbb\n";
if(i)
return p;
return t;
}
int main(array<System::String ^> ^args)
{
printf(test(true));
printf(test(false));
return 0;
}
それはある種の何かを返します:
bbb
%^&$^$%
test(false)がローカル変数へのポインターを返すことは明らかです。問題は、pもローカル変数であるということです。関数が戻った後、「bbb\n」のメモリがクリーンアップされない理由。constchar[]はconstchar*と同じように解釈されると思いましたが、見た目どおりではありません。