- 1 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 17:56:53.03 ID:uFDqtnkl.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part146 https://mevius.5ch.net/test/read.cgi/tech/1573094136/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.105【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1556142878/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 ↑え?だってお前、普通ダイナミックリンクするだろ? "ダイナミックリンク"す・れ・ば、ファイルサイズ**増えないです**
- 992 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:42:38.23 ID:v4E0eL1J.net]
- 緩い意味でのどこかを指し示す意味でのアドレスと言っているなら
スマポもアドレスになるから、to_addressの意味がさらにもう何が何だか
- 993 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 08:50:06 ID:1ZJZZZs9.net]
- ポインタというよりvoid*だね
void以外のポインタは実体の型により訳が変わる点が 単なるアドレスと違うところで
- 994 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:02:33 ID:v4E0eL1J.net]
- いやでも、to_address() の戻り値の型は
void* ではなくて、ちゃんとした型情報を持った普通のポインタ型だよ void* にはならないよ
- 995 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:06:23 ID:yrj+fbAX.net]
- またつまんない話で盛り上がってんのな
- 996 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 10:42:46 ID:70BTs5bI.net]
- >>966
返されるのはあくまでアドレス(番地)の値だろう。型情報としてT*型を持つが、それはC/C++ではすべての式や値が型を持つから当たり前の話であって、型を持つからアドレスとは呼ばないというのはおかしな話だと思う。
- 997 名前:デフォルトの名無しさん [2020/01/31(金) 11:36:09.10 ID:v4E0eL1J.net]
- >型を持つからアドレスとは呼ばないというのはおかしな話だと思う。
つまりは ポインタ=アドレス って事ね
- 998 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 11:45:36 ID:GGrzMUVS.net]
- ポインタってのは変数のことでその中身はアドレスって第3版の時点ではっきり書かれてるぞ
型を持ってるのもあくまで変数の方だ
- 999 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:34:07 ID:AatGgooz.net]
- ヌルポ
- 1000 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:35:25 ID:v4E0eL1J.net]
- それは当たり前
そういう話ではなく う〜ん、どういえばいいか 例えば、年齢を得る関数 int get_age() ってのがあったとして 俺は別にこれに疑問を持たんし、何とも思わない to_address それは int に対して age の方が高度で抽象的な概念になってるから ところが pointer to_address() の場合はこれが逆になってて pointer の方が address より高度で抽象的な概念になってる だからこう、本質的に気持ち悪いというか 先の例で言えば まぁ適切な例かは分からないが age_t get_int() ってなってたらキモイだろう
- 1001 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:37:15 ID:v4E0eL1J.net]
- なんか途中で送信してしまった
それは当たり前 そういう話ではなく う〜ん、どういえばいいか 例えば、年齢を得る関数 int get_age() ってのがあったとして 俺は別にこれに疑問を持たんし、何とも思わない to_address() と何が違うか それは int に対して age の方が高度で抽象的な概念になってるから ところが pointer to_address() の場合はこれが逆になってて pointer の方が address より高度で抽象的な概念になってる だからこう、本質的に気持ち悪いというか 先の例で言えば、まぁ適切な例かは分からないが age_t get_int() ってなってたらキモイだろう
- 1002 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:45:36 ID:GGrzMUVS.net]
- なんか勝手に幻想抱いてるけどポインタに入れるものは常にアドレスだから
何もおかしくない
- 1003 名前:デフォルトの名無しさん [2020/01/31(金) 12:46:08 ID:YmbKsQW3.net]
- VLTのto_addressは欲しい
- 1004 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 12:46:37 ID:v4E0eL1J.net]
- でさ、
age_t get_int() ってのを見たとき 「age_t の中身は int だし int を get してそれが age_t に入っているのだから 解釈としては問題ない」 って感じのことを言ってるレスが結構あったけど 俺はなんか違うような気がするって言ってるわけ
- 1005 名前:tォルトの名無しさん mailto:sage [2020/01/31(金) 12:48:59 ID:v4E0eL1J.net]
- 具体的には >>977 とかね
age_t の中身は常に int だから〜的な だとしても age_t get_int() とは書かんだろう、というのが俺の主張だから
- 1006 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:07:50 ID:AatGgooz.net]
- アドレスとポインタってのは
ageとage_tの関係
- 1007 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 13:13:53 ID:GGrzMUVS.net]
- じゃあint *p = &a;の&もアドレスを取る演算子じゃなくて
ポインタを取る演算子に名前変えてもらうようにお願いしたら?
- 1008 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:37:24 ID:aVH6lH01.net]
- アドレスはデコーダに入力するビット列 (ハードウエアの概念)
ポインタはアドレスを扱うことを目的とするデータ型 (プログラム言語の概念) IEEE754とdoubleのような関係だ
- 1009 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 17:44:13 ID:MQmpFGUT.net]
- 通常はポインタが数値であることなんてのは意識せんわな。
リングバッファなんかを取り扱うなら嫌でも意識することになるが。
- 1010 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:16:27.29 ID:HzrC4w9c.net]
- ポインタが数値がどうか意識しないと
リングバッファも作れないようなのが C++を使うのか
- 1011 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:34:36 ID:Dscz4LHl.net]
- 分岐無くす高速化でもしているんじゃね
- 1012 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:37:20 ID:CZDp2h8t.net]
- >>976
その例は逆 アドレスとポインタは本質(イデア)とその表現の関係にある (イデア <-> 表現) 年齢 <-> 整数 色 <-> RGB値 アドレス <-> ポインタ この関係に照らせば、年齢を取得する場合は int get_age(); だし、色を取得する場合は RGB get_color(); だし、アドレスを取得する場合は T* get_address(); になる
- 1013 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 18:53:37 ID:Nt0XFA2s.net]
- その哲学続けるの
- 1014 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:10:20 ID:xOuBGXY8.net]
- >>986
分岐? それも普通は不要 アドレスを意識するのはDMAなど ハードウェアでリングバッファを使う時くらい
- 1015 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:13:50 ID:MjAWY572.net]
- ハードウェアとのDMAならポインタにいれるアドレス自体は気にしないだろ
特定の物理メモリを適当な仮想アドレスにマップして使うのだし
- 1016 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:35:40 ID:xOuBGXY8.net]
- DMAが扱うのは物理アドレス
- 1017 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:42:13 ID:xOuBGXY8.net]
- じゃないのもあったりするのか?
チープなマイコンのDMAしか直接扱ったことがなくて
- 1018 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:51:22 ID:aVH6lH01.net]
- 仮想アドレスってことはページフォールトがあるってことだろ
OSによってページインされるまで待つことになるが そこまでペリフェラルで面倒見る必要あるか考えてみそ
- 1019 名前:◆QZaw55cn4c mailto:sage [2020/01/31(金) 19:51:32 ID:tTpxWp9S.net]
- >>933
どれくらいブラックでしょうか? https://mevius.5ch.net/test/read.cgi/tech/1434079972/21 https://ideone.com/9KIuSD
- 1020 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:53:30.58 ID:aVH6lH01.net]
- 未練
- 1021 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:54:58.34 ID:xOuBGXY8.net]
- >>993
フォルトならエラーで止めときゃいいんでない? そこまでハードで面倒見る必要は無い
- 1022 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 19:55:32.42 ID:yrj+fbAX.net]
- 最近はIOMMUが一般的
- 1023 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:02:09.40 ID:yrj+fbAX.net]
- >>993
おいおいそんなわけないだろ デバイスがさわるメモリはページアウトしない でも物理アドレスを使わない理由は何でしょう? あスレ違いだな
- 1024 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:34:35 ID:aVH6lH01.net]
- >>996
ペリフェラルって何だと思う? >>998 循環論法だな
- 1025 名前:デフォルトの名無しさん mailto:sage [2020/01/31(金) 20:54:47.19 ID:Nt0XFA2s.net]
- C++相談室 part148
https://mevius.5ch.net/test/read.cgi/tech/1580471646/
- 1026 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 44日 2時間 57分 54秒
- 1027 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|