回答編集履歴

3

エラーの説明

2016/01/21 02:23

投稿

hsk
hsk

スコア728

test CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  [http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB](http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB)
4
4
 
5
+
6
+
7
+ >Runtime error(Exit status:139(Invalid memory reference))
8
+
5
- 単体みれば、C++の言語仕様上のルール違反ではないです。
9
+ は、実時エラー(メモリアクセス違反:無効領域)あり、C++の言語仕様上、お示しコード各行単体ではルール違反ではないです。
6
10
 
7
11
 
8
12
 

2

詳細を記載

2016/01/21 02:23

投稿

hsk
hsk

スコア728

test CHANGED
@@ -1,9 +1,13 @@
1
- char str[] = "ABC";
2
-
3
- と記述すると、うまくいくと思われます。
4
-
5
1
  OS(のメモリ領域の扱い)によっても異なると思いますが、文字列リテラルについては(マルウェア対策のために)書き換え不可のメモリ領域に確保されたりします。
6
2
 
7
3
  [http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB](http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB)
8
4
 
9
5
  各行単体でみれば、C++の言語仕様上のルール違反ではないです。
6
+
7
+
8
+
9
+ char str[] = "ABC";
10
+
11
+ と記述すると、うまくいくと思われます。strの示すメモリ領域がスタック領域になりますので。
12
+
13
+

1

質問に対する回答

2016/01/21 02:19

投稿

hsk
hsk

スコア728

test CHANGED
@@ -1,9 +1,9 @@
1
- こんにちは。
2
-
3
1
  char str[] = "ABC";
4
2
 
5
- と記述すると、うまくいくと思われます。
3
+ と記述すると、うまくいくと思われます。
6
4
 
7
5
  OS(のメモリ領域の扱い)によっても異なると思いますが、文字列リテラルについては(マルウェア対策のために)書き換え不可のメモリ領域に確保されたりします。
8
6
 
9
7
  [http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB](http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB)
8
+
9
+ 各行単体でみれば、C++の言語仕様上のルール違反ではないです。