12index




1: 2017/05/08(月) 05:03:46.220 ID:aAQ7XEJC0
いまいちよくわかりません


18: 2017/05/08(月) 05:12:16.170 ID:8NgQoRvcp
>>13
それスタック領域だから違うよ

53: 2017/05/08(月) 05:37:27.306 ID:6uPW2IfS0
>>13
ファっ!お前は一体誰やねん?

4: 2017/05/08(月) 05:05:47.744 ID:i/nLgI5B0
静的よりダイナミックな感じ

6: 2017/05/08(月) 05:06:50.733 ID:aAQ7XEJC0
>>4
さっぱりわからない

7: 2017/05/08(月) 05:08:12.961 ID:UvXAvxvG0
確保したんだからクリボーの領域に影響ないだろ
お前が領域外まで書き込まなければ

12: 2017/05/08(月) 05:09:27.365 ID:aAQ7XEJC0
>>7
クリボーがいるのが前提なら初めから作れるけど
最初にいないならエラーになっちゃう・・・

9: 2017/05/08(月) 05:08:36.416 ID:UvXAvxvG0
クリボーじゃねえ
フラグだ

14: 2017/05/08(月) 05:10:55.891 ID:aAQ7XEJC0
>>9
クリボーが描写できないんだよ

10: 2017/05/08(月) 05:08:45.023 ID:DZuS+RFua
変数の長さが固定だったとして、その長さを後から変えれるってだけ。

15: 2017/05/08(月) 05:11:21.729 ID:aAQ7XEJC0
>>10
さっぱりわからない

11: 2017/05/08(月) 05:08:47.292 ID:8NgQoRvcp
データが増える
データをどこかに保持しないといけない
動的確保

16: 2017/05/08(月) 05:11:45.712 ID:aAQ7XEJC0
>>11
クリボーは関係ないの?

42: 2017/05/08(月) 05:29:20.531 ID:I/HO12Cs0
>>16
関係あるわ

47: 2017/05/08(月) 05:32:06.748 ID:aAQ7XEJC0
>>42
クリボー関係あるの・・・

19: 2017/05/08(月) 05:12:48.761 ID:yS1hhcp9d
プログラムが実行される前から確保されてるのが静的だとしたら実行時に確保されるのが動的

22: 2017/05/08(月) 05:15:05.560 ID:aAQ7XEJC0
>>19
そのプログラムがお手上げなの

24: 2017/05/08(月) 05:16:30.536 ID:yS1hhcp9d
>>22
Cならコンパイル時に確保されるのが静的って考えればええ

27: 2017/05/08(月) 05:18:26.273 ID:aAQ7XEJC0
>>24
むおーもっと詳しく!

25: 2017/05/08(月) 05:16:53.044 ID:8NgQoRvcp
mallocはヒープ領域
関数内の変数はスタック領域

C言語での動的確保はヒープを使うことを指す

29: 2017/05/08(月) 05:19:31.273 ID:aAQ7XEJC0
>>25
ヒープってなーに?
スタック領域は小さいイメージがある!
あまり使っちゃいけないの?

26: 2017/05/08(月) 05:17:54.978 ID:UvXAvxvG0
指定してる領域が少ないからかもね

30: 2017/05/08(月) 05:20:15.286 ID:aAQ7XEJC0
>>26
よくわかんない
サッパリだ
メモリ領域サッパリ

31: 2017/05/08(月) 05:20:41.365 ID:OT8CvmGrd
動的確保の何が分からんのか分からんから説明できないよ

37: 2017/05/08(月) 05:26:02.656 ID:aAQ7XEJC0
>>31
C++だと
クリボークラス a;
クリボー *pa = new クリボー;
だとすると
クリボーの描写をコードに書くとエラーになっちゃうから困ったんだ!

40: 2017/05/08(月) 05:28:30.653 ID:8NgQoRvcp
>>37

ごめん、言ってることがもうわからない

45: 2017/05/08(月) 05:31:07.844 ID:aAQ7XEJC0
>>40
今までは
クリボーの変数を全部用意しておいて
クリボーがいるかいないかをフラグで判断していたの
フラグが1ならクリボーいるから描写するみたいな
でもいるかいないかわからない動的確保の場合
ソースがエラーになっちゃうような気がするのだ

58: 2017/05/08(月) 05:40:11.406 ID:Mj6sgmUH0
>>31
ケツ出せ
俺が分からせてやる

33: 2017/05/08(月) 05:22:31.778 ID:8NgQoRvcp
mallocでサイズを指定してメモリ確保すればいいやん

38: 2017/05/08(月) 05:26:52.049 ID:aAQ7XEJC0
>>33
ほえー

34: 2017/05/08(月) 05:23:29.331 ID:WhDg6yvH0
静的
固定の領域でプログラム実行前からすでに大きさが決まっている
そのため、この領域を超える大きさは格納できない

動的
不定の領域でプログラム実行前には大きさが決まっていない
プログラム実行時に必要な領域を確保する
そのため、大きさが不定な値を格納できる

はい、簡単

38: 2017/05/08(月) 05:26:52.049 ID:aAQ7XEJC0
>>34
うんー・・・

36: 2017/05/08(月) 05:24:27.853 ID:guBXEmVSd
スタックのサイズは大体のコンパイラのオプションで変えられるからそこは重要じゃない

41: 2017/05/08(月) 05:28:46.650 ID:aAQ7XEJC0
>>36
スタックでもなんら問題ないという感じなのかなー
さっーぱりわからない

43: 2017/05/08(月) 05:30:44.061 ID:OMT1jciT0
スタックのサイズ変えるのは簡単だけどスタックの最大使用量を真面目に計算するのは大変じゃよ

49: 2017/05/08(月) 05:33:27.870 ID:aAQ7XEJC0
>>43
サッパリ妖精が飛びすぎている

44: 2017/05/08(月) 05:31:03.692 ID:8NgQoRvcp
ポインタと変数を間違えてないか?

50: 2017/05/08(月) 05:35:40.711 ID:aAQ7XEJC0
>>44
わからない!
おそらく
{
int i;
}
これはスタック領域だというのがわかった
でもこれを開放するには}←ここまでいくしかないみたいな
一方newした場合}←ここまでいっても消えず
自分の指定した所で消せるのかなと
動的確保の場合ヒープ領域という領域が使えると教えてもらったところまでは理解した!

46: 2017/05/08(月) 05:32:06.271 ID:hVLXDcpD0
もしかしてCとC++の区別がついてないのか?

52: 2017/05/08(月) 05:37:26.182 ID:aAQ7XEJC0
>>46
そもそもC言語をそこまで熟知せずC++に移動してクラスをさわり
メモリがわかっていない状態で動的確保考えているような感じ

48: 2017/05/08(月) 05:33:06.750 ID:8NgQoRvcp
ソースでエラーってコンパイルエラーのこと?メモリ確保関係ないじゃん

55: 2017/05/08(月) 05:38:19.342 ID:aAQ7XEJC0
>>48
ないのに参照しようとしたらエラーになるのが目に見えているというか

56: 2017/05/08(月) 05:39:36.897 ID:8NgQoRvcp
>>55
それはメモリアクセス違反やんけ
一通り教科書読んでやり直せや

51: 2017/05/08(月) 05:36:00.950 ID:8NgQoRvcp
お前はもうスタックのサイズとか気にしないでいいよ
根本的にプログラミングを理解していない気がする
Cかどうか以前に

60: 2017/05/08(月) 05:40:50.566 ID:aAQ7XEJC0
>>51
変数を最初からクラスも構造体も使わず全部書いていいなら嬉しいのだけど
それだとなんか色々あれなのかなと思い
構造体やクラスを勉強中なのだけど
まだまだ使い方の理解が足りてなさ過ぎる感じな気がする
愚直にこうしたほうがいいというソース通りにやればいいんだろうけど
それができない性格なんだよなぁ・・・数学とかもどうしてそうなのか?というのを知りたがるというか

54: 2017/05/08(月) 05:37:48.265 ID:YebBvfgbe
聞くための説明できないなら一からやり直したほうがいいかもな

57: 2017/05/08(月) 05:40:05.390 ID:YebBvfgbe
あーもう言語関係なく内容全く理解してないわこれ

59: 2017/05/08(月) 05:40:31.110 ID:JaGWfRGMd
NULL入れておいて確かめりゃええやん

63: 2017/05/08(月) 05:42:24.527 ID:aAQ7XEJC0
>>59
それでもエラーにならない?
例えば*p;というのがあったとして
この子がNULLかを調べればいいとするのはいいとして
その下に
NULLじゃなければの式を書いたら全部エラーにならない?

64: 2017/05/08(月) 05:42:59.394 ID:4x6mUYoD0
>>63
日本語で書くな、Cで書け

66: 2017/05/08(月) 05:43:57.107 ID:YebBvfgbe
>>64
いい先生になりそうだなw

69: 2017/05/08(月) 05:45:07.070 ID:aAQ7XEJC0
>>64
クリボークラス
int x,y;

if(クリボークラス!=NULL){
printf("312",p->x);←エラーにならない?
}

76: 2017/05/08(月) 05:49:47.281 ID:u4SH4+67H
>>69
>printf("176",p->x);←エラーにならない?
知るか馬鹿
エラーメッセージぐらい貼れよ

77: 2017/05/08(月) 05:50:31.484 ID:aAQ7XEJC0
>>76
勘だけどそんな変数アリマセンになる

83: 2017/05/08(月) 05:53:40.987 ID:4x6mUYoD0
>>77
当たり前だろ
そもそも「p」なんてどこでも宣言も定義もしてないし

86: 2017/05/08(月) 05:58:05.375 ID:aAQ7XEJC0
>>83
(´・ω・`)

67: 2017/05/08(月) 05:44:19.476 ID:8NgQoRvcp
>>63
ぜんぜんわからないけど、俺ならエラーにならない絶対に

61: 2017/05/08(月) 05:41:19.920 ID:4x6mUYoD0
まず、>>1は宣言と定義の違いを理解してない気がする

65: 2017/05/08(月) 05:43:47.562 ID:aAQ7XEJC0
>>61
わからないかも
宣言はint i;←これ?
定義がclass kuribo{}←これ?

68: 2017/05/08(月) 05:44:49.276 ID:YebBvfgbe
>>65
CとC++ごっちゃに考えてる?

71: 2017/05/08(月) 05:45:55.345 ID:aAQ7XEJC0
>>68
わからない

75: 2017/05/08(月) 05:46:59.890 ID:YebBvfgbe
>>71
ならC++に手を出すな
あと2年経ってからにしとき

81: 2017/05/08(月) 05:53:05.084 ID:4x6mUYoD0
>>65
まず、『宣言』というのは「なんかよくわからないけど、そういう名前の何かがある」という事を指定するもの

・関数ではint hoge(int); のように{}がないやつ(いわゆる『プロトタイプ宣言』)
・構造体やクラスでは、struct hoge; のようにこれまた{}がないやつ
・変数ではextern int hoge; のようにexternをつけたやつ

宣言は、名前はわかるが具体的にどうなってるのかがわからないので、できる操作が限られてる
たとえば構造体であれば、ポインタは使えるけどポインタが指す先を使えない、とか

一方『定義』というのは、「具体的にどうなってるのか」の方を指定するもの

・関数ではint hoge(int a) { return a+1; } のように{}つきのやつ
・構造体やクラスでは、struct hoge { int piyo; }; のようにこれまた{}つきのやつ
・変数ではexternのないやつ

これがあるとようやくいろいろ使えるようになる
この2つの違いを理解してないと、「使えるはずなのに使えない!(実際は宣言しただけでただの定義し忘れ)」みたいな事が起こるぞ!

85: 2017/05/08(月) 05:57:27.155 ID:aAQ7XEJC0
>>81
newとかしたときにポインタを使うのは
どんなのあるかわからないからというイメージがある
ウーン
クリボー増殖させる本でも探すのがいいのかなぁ

1000: ぶる速がオススメ記事をお伝えします 2017/03/22(水) 16:43:06.23 ID:burusoku

おすすめブログ最新情報