次のプログラムを見ていますが、メモリがどのように割り当てられているのか、またその理由がわかりません。
void function() {
char text1[] = "SomeText";
const char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1 );
}
上記のコードでは、最後のコードは明らかにヒープにあります。ただし、私が理解text2
しているように、プログラムのデータセグメントにありtext1
、スタック上にある可能性があります。それとも私の仮定が間違っていますか?ここで正しい仮定は何ですか?このコンパイラは依存していますか?