回答編集履歴
3
エラーの説明
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
|
-
|
9
|
+
は、実行時エラー(メモリアクセス違反:無効領域)であり、C++の言語仕様上、お示しのコード各行単体ではルール違反ではないです。
|
6
10
|
|
7
11
|
|
8
12
|
|
2
詳細を記載
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
質問に対する回答
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++の言語仕様上のルール違反ではないです。
|