今までずっとC言語は文字列扱うのに苦労すると感じてきましたが、
以下のようなプログラムがちゃんと動作するのは「たまたま」なのか「必然」なのかがよくわかりません。
#include <stdio.h>
int main(void);
char* func(void);
int main(void){
printf("%s\n",func());
return(0);
}
char* func(void){
char* buffer="hello";
return buffer;
}
"hello"の文字列をbufferというローカル変数に入れているため、bufferの領域自体はfuncを抜けると解放されますよね。
でもbufferの指している先の"hello"の文字列が格納されているメモリ領域自体は解放されないのでしょうか?
要するに""で作られた文字列は、mallocみたいにfreeなどで解放処理をされない限り
関数のスコープを抜けても利用できる領域なのかどうかを知りたいのです。
またもしそうであるならば、""の領域を解放したい時はどのようにすればできるのか。そんな方法はそもそもあるのか。
もしご存知の方がいれば教えてください。
ちなみに上のプログラムはVineLinux上のgccでコンパイルしたものです。
とりあえず正しく表示はされました。