C言語なら俺に聞け(入門篇) Part 34
■ このスレッドは過去ログ倉庫に格納されています
0628デフォルトの名無しさん
2008/08/23(土) 15:04:14mallocで領域確保するしないの問題と
>char *str;
>scanf("%s",str);ではできませんが
>char str[100];
>scanf("%s",str);はできて
これは分けて考えないと。
mallocっていうのはアプリケーションとOSとの間のやり取りで見ると
その都度要求のあったメモリサイズをちまちまOSから借りてくるわけではなく
何らかのタイミング(アプリケーション起動時、もしくはアプリケーションが最初に発行するmalloc)
である程度の大きさのメモリを借りてきます。
たまたまあなたの作ったアプリケーションが借りてきたメモリが実は1バイト以上なので
malloc(1)で確保したエリアに3文字書いてもエラーにならかった分けです。
この辺はヒープという単語でググってください。
で、
>char *str;
>scanf("%s",str);ではできませんが
こっちはstrポインタだけで文字を収める先が用意されてないので駄目です。
>char str[100];
>scanf("%s",str);はできて
こちらはstrは100個の文字を収める場所がありますので当然OKです。
■ このスレッドは過去ログ倉庫に格納されています