teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

エラーの説明

2016/01/21 02:23

投稿

hsk
hsk

スコア728

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

詳細を記載

2016/01/21 02:23

投稿

hsk
hsk

スコア728

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

質問に対する回答

2016/01/21 02:19

投稿

hsk
hsk

スコア728

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++の言語仕様上のルール違反ではないです。