C++のメモリーの気持ちを考えたくなるまとめ

Qiitaに記事を書かねば・・・
4
りーま@速度勾配テンソルの第二不変量 @strimuer213p

よく参考書で見かけるんですが「動的」って言葉が実はよくわかってない…

2017-08-07 18:08:14
白山風露 @kazatsuyu

@strimuer213p 実行時まで分からないのが動的で、構文解析時点で解決できるのが静的

2017-08-07 18:13:44
りーま@速度勾配テンソルの第二不変量 @strimuer213p

@kazatsuyu 外部からの入力によって変化するってことですか…? ➀ cin>>i; j=i+i; の様にjはiが入力されないうとわからないもの、動的 ② i=1; j=i+i; こちらは構文解析でjがわかりそうなもの、静的 という感じですか?

2017-08-07 18:20:39
白山風露 @kazatsuyu

@strimuer213p 何が静的で何が動的かは文脈によって変わる。C/C++の変数であれば、グローバル変数は静的変数だしスタック変数は動的変数。この場合はアドレスが静的か動的かという点が異なる。スタック変数は実行時までアドレスがどこになるかわからない

2017-08-07 18:24:58
りーま@速度勾配テンソルの第二不変量 @strimuer213p

@kazatsuyu メモリ割り当ての部分で動的か静的か変わってきそうですね… 「グローバル変数は静的関数」からいろいろ調べてみます

2017-08-07 18:33:20
yumetodo @yumetodo

@strimuer213p @kazatsuyu というか、動的と静的を分類することに意味がない。コンパイル時になにが決まるかのみが大事。

2017-08-09 03:47:58
バンビちゃん@実際コロナじゃなくてもぼっち @pink_bangbi

メモリまわりで言えば ・コンパイル時にサイズが決まるのが静的 ・実行時にサイズが決まるのが動的 雑にいえば ・int vaue = 42; は静的 ・int* value = new int(42); は動的

2017-08-09 03:51:52
バンビちゃん@実際コロナじゃなくてもぼっち @pink_bangbi

そこら辺はデータ領域まわりを調べてみるとよさみ

2017-08-09 03:52:48
りーま@速度勾配テンソルの第二不変量 @strimuer213p

@yumetodo @kazatsuyu そのあと少し調べてなんとなく動的、静的を整理しました 動的では配備した領域を解放したときに解放した事によってデータが参照できない問題を知ったのですがそれも「コンパイルの時」というひとまとまりの作業の中という事でいいですか?

2017-08-09 03:59:15
yumetodo @yumetodo

@strimuer213p @kazatsuyu 1. 何が動的で何が静的かという視点がない 2. プリプロセス時、コンパイル時、実行時の3つの時間 3. 変数の寿命と無効なポインタ/参照 がぐちゃぐちゃ。

2017-08-09 04:04:14
りーま@速度勾配テンソルの第二不変量 @strimuer213p

@yumetodo @kazatsuyu おおぅ… いろいろわからない区分分けが出てきたのでそっちの勉強してみます…

2017-08-09 04:08:43
yumetodo @yumetodo

まあそうなんだけど、他にもいくらでも静的と動的の定義なんてあるので考えるだけ無駄。そんな言葉遊びは忘れるべし。 @strimuer213p twitter.com/pink_bangbi/st…

2017-08-09 04:19:33
バンビちゃん@実際コロナじゃなくてもぼっち @pink_bangbi

なので『メモリまわり前提』とした(メモリまわりで他に動的・静的の意味ってあったっけ? twitter.com/yumetodo/statu…

2017-08-09 04:24:25
yumetodo @yumetodo

そうそう、変数の寿命を考えるにあたりきわめて大事。30分あれば理解できるのでがんばれ(前にteratailsでそれの解説を回答した記憶があるがどれだっけか。) @strimuer213p twitter.com/pink_bangbi/st…

2017-08-09 04:25:35
yumetodo @yumetodo

自動変数領域だって動的やろ。 ね、だから意味がないんだって、そんな短い単語に押し込めることが。 twitter.com/pink_bangbi/st…

2017-08-09 04:28:27
yumetodo @yumetodo

- auto storage - static storage(global scope) - static storage(function scope) - allocated memory でいいじゃん。静的とか動的とか言うからわからないんだって@strimuer213p twitter.com/pink_bangbi/st…

2017-08-09 04:30:41
yumetodo @yumetodo

@pink_bangbi thread local storage以外は30分で説明できるでしょ。malloc使ったことある人に対してなら。

2017-08-09 04:36:30
バンビちゃん@実際コロナじゃなくてもぼっち @pink_bangbi

@yumetodo 回りに説明してくれる人がいるのと、自分で調べるのとでは全然難易度が違ってくるのでは

2017-08-09 04:41:27
yumetodo @yumetodo

ああ、もうわかった。一週間以内にC++のメモリーの気持ちをよく使われる処理系を例に理解する記事をQiitaにあげる。 @strimuer213p @pink_bangbi

2017-08-09 04:42:10
Super Brother @gnaggnoyil

@yumetodo @strimuer213p C++規格の用語によって「function scope」はlabelが該当の関数の実装のどこでも使われるってこと。関数の実装はblockで組んだのでその実装には「block scope」しかない。

2017-08-09 08:15:06
Super Brother @gnaggnoyil

@yumetodo @strimuer213p ちなみに関数の宣言も自らのscopeがあるので、そのscopeは「function prototype scope」って呼ばれる。

2017-08-09 08:16:40
yumetodo @yumetodo

@gnaggnoyil @strimuer213p なるほど、block scopeで良かったのか、書いててあれっと思ってあとで規格書読もうと思ってた。

2017-08-09 10:38:25

コメント

KG-nobody @kgnobody 2017年9月23日
仮に動的静的の分類に意味ないとしても、どういう文脈でどういう定義がよく用いられてるかってのは分からないと、初心者が読み物するときには困るのでフォローしてあげないと。そのレベルででてくる動的はnewやらmalloc(あとvectorとかのSTL類など)を使ったかどうか。という解釈でいいと思うけど。
1
tog20xx @tog20xx 2017年9月23日
「大体全部違う」で草生えた
0