回答編集履歴
3
エラーの説明
answer
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
OS(のメモリ領域の扱い)によっても異なると思いますが、文字列リテラルについては(マルウェア対策のために)書き換え不可のメモリ領域に確保されたりします。
|
2
2
|
[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)
|
3
|
-
各行単体でみれば、C++の言語仕様上のルール違反ではないです。
|
4
3
|
|
4
|
+
>Runtime error(Exit status:139(Invalid memory reference))
|
5
|
+
は、実行時エラー(メモリアクセス違反:無効領域)であり、C++の言語仕様上、お示しのコード各行単体ではルール違反ではないです。
|
6
|
+
|
5
7
|
char str[] = "ABC";
|
6
8
|
と記述すると、うまくいくと思われます。strの示すメモリ領域がスタック領域になりますので。
|
2
詳細を記載
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
char str[] = "ABC";
|
2
|
-
と記述すると、うまくいくと思われます。
|
3
1
|
OS(のメモリ領域の扱い)によっても異なると思いますが、文字列リテラルについては(マルウェア対策のために)書き換え不可のメモリ領域に確保されたりします。
|
4
2
|
[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)
|
5
|
-
各行単体でみれば、C++の言語仕様上のルール違反ではないです。
|
3
|
+
各行単体でみれば、C++の言語仕様上のルール違反ではないです。
|
4
|
+
|
5
|
+
char str[] = "ABC";
|
6
|
+
と記述すると、うまくいくと思われます。strの示すメモリ領域がスタック領域になりますので。
|
1
質問に対する回答
answer
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
こんにちは。
|
2
1
|
char str[] = "ABC";
|
3
|
-
と記述すると、うまくいく
|
2
|
+
と記述すると、うまくいくと思われます。
|
4
3
|
OS(のメモリ領域の扱い)によっても異なると思いますが、文字列リテラルについては(マルウェア対策のために)書き換え不可のメモリ領域に確保されたりします。
|
5
|
-
[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
|
+
[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)
|
5
|
+
各行単体でみれば、C++の言語仕様上のルール違反ではないです。
|