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

回答編集履歴

4

誤字修正

2020/06/27 05:52

投稿

YT0014
YT0014

スコア1832

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  余談
13
13
  とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
14
- それを超える文字列を使いたいとき、このコンパイラの固定文字列のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
14
+ それを超える文字列を使いたいとき、このコンパイラのchar配列のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
15
15
  ```C
16
16
  int hoge() {
17
17
  static char message[20] = "限界までの文字列です";

3

誤字修正

2020/06/27 05:52

投稿

YT0014
YT0014

スコア1832

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  余談
13
13
  とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
14
- それを超える文字列を使いたいとき、このコンパイラの固定文字れ鵜のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
14
+ それを超える文字列を使いたいとき、このコンパイラの固定文字のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
15
15
  ```C
16
16
  int hoge() {
17
17
  static char message[20] = "限界までの文字列です";

2

変更

2020/06/27 05:14

投稿

YT0014
YT0014

スコア1832

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
11
11
 
12
12
  余談
13
- Lattice Cの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
13
+ とあるCの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
14
14
  それを超える文字列を使いたいとき、このコンパイラの固定文字れ鵜のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
15
15
  ```C
16
16
  int hoge() {

1

余談追加

2020/06/27 05:13

投稿

YT0014
YT0014

スコア1832

answer CHANGED
@@ -7,4 +7,16 @@
7
7
  printf("変数iのアドレス %p\n", &i); /* スタック変数に決定 */
8
8
  printf("変数cのアドレス %p\n", &c); /* スタック変数に決定 */
9
9
  ```
10
- コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
10
+ コンパイラが、スタック変数に決定した順番で決めていたら、ご提示のような結果になるでしょう。
11
+
12
+ 余談
13
+ Lattice Cの一部のバージョンで、初期化文字列に文字数制限があったことがあります。
14
+ それを超える文字列を使いたいとき、このコンパイラの固定文字れ鵜のメモリ配置が連続することを利用して、以下のようなコードを使っていました。
15
+ ```C
16
+ int hoge() {
17
+ static char message[20] = "限界までの文字列です";
18
+ static char dummy[] = "追加文字列。";
19
+ message[20] = 0x20;
20
+ }
21
+
22
+ ```