この関数を考えてみましょう:
void useless() {
char data[] = "aaa";
}
ここで学んだことから、"aaa"
リテラルはプログラムの最後まで生き続けます。ただし、data[]
(リテラルで初期化された)はローカルであるため、関数の最後までしか存続しません。
メモリがコピーされるので、プログラムはリテラルに 4B、リテラルへのポインタとリテラルのポインタに 4Bバイトを必要data
とします - これは本当ですか?sizeof(size_t)
data
sizeof(size_t)
リテラルに静的な保存期間がある場合、2 番目の呼び出しによってローカル リテラルに新しいメモリが割り当てられない - これは本当ですか?