回答編集履歴

1

追記

2016/08/18 06:09

投稿

moonphase
moonphase

スコア6621

test CHANGED
@@ -7,3 +7,21 @@
7
7
  但し、オーバーフローが発生してもプログラムがどのように動くかは何ともいえません。
8
8
 
9
9
  使われない領域が破壊されてもプログラムは動きます。
10
+
11
+
12
+
13
+ 以下、追記
14
+
15
+
16
+
17
+ `char str[16];`は16個の配列を確保するのではなく、16バイトのメモリ領域を確保しただけにすぎません。
18
+
19
+ その17バイト目以降も、何かしらの領域があります。
20
+
21
+
22
+
23
+ `char str[16];`した場合は、C言語の文字列終端文字`\0`も含め16バイトで収まるようにしましょう。
24
+
25
+ もし、そうなっていない場合は文字列を扱う関数は`\0`が出現するまでメモリ内をアクセスします。
26
+
27
+