【初心者歓迎】C/C++室 Ver.105【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
2020/03/05(木) 06:44:44.35ID:zdEofaoY
本当にリークだったりして
2020/03/05(木) 10:32:20.81ID:ZZWMeQXX
>>714
プログラムは全インスタンス解放後にstd::chrono::secondsでスリープかけていて
2GBほど掴んだメモリが半日経ってもそのままでした
こういうのもシステム起因の挙動なのでしょうか?
2020/03/05(木) 11:03:11.50ID:2gUuzrSw
>>716
心配なら Valgrind とかで調べてみれば?
Linux はなるべくメモリを使い切る方針だったはず (※) なので、 >>714 のようなことは普通にあると思う。

※ 空いているメモリがある状態というのは要するにメモリを無駄にしている状態ってこと
2020/03/05(木) 13:46:12.81ID:866E1Ujc
他のプログラムで多量に確保してみれば?
2020/03/05(木) 14:55:04.52ID:LYrzkUWd
>>716
まず質問者の心がけとして
言葉だけでなく実際のコードと計測結果をそのまま書け
2020/03/05(木) 16:41:49.18ID:ZZWMeQXX
713=716ですが、malloc_trim関数を呼んだらメモリが空きました
>>714さんの仰るようにOSに返していないのが原因のようです

>>719
すみません、自社内のかなり複雑で汚いコードなので晒せませんでした
厄介なことにスクラッチから同じ程度のメモリを使うテストコードを書いたら現象は再現しませんでした
2020/03/05(木) 17:13:53.55ID:ywFWHxIm
OSからのリクエストと返却はコスト高だから
ランタイムのアロケーターが握ったままでOSには返さない
OSへ返すタイミングはプロセスが終わるとき、という実装は割りとありえそう
2020/03/05(木) 18:22:39.16ID:ZZWMeQXX
お礼を言うのを忘れてました
回答くれた方ありがとうございました
2020/03/05(木) 18:46:09.59ID:LYrzkUWd
>>722
malloc_trim使えるなら
malloc_statsも見てみたらいい
たぶんmmapで確保した分は返却されない
2020/03/05(木) 21:06:25.30ID:BOwkxST5
>>713,716
http://www.kouno.jp/home/c_faq/c7.html#25
たぶん C++ もそうだと思います
725デフォルトの名無しさん
垢版 |
2020/03/06(金) 23:01:27.31ID:+gnSZkOM
CとC++ってなんで一緒にされていることが多いの?
2020/03/07(土) 00:18:58.16ID:OUVuA7Mu
一緒に使うことが多いから
じゃね?
2020/03/07(土) 08:11:04.10ID:bdrHDbLb
他の言語同士に比べて類似してる部分が多いだけに、
Cでの動作はこう、しかしC++では違う、みたいな情報の有用性が高いから、かも。
少なくとも、こういう質問と回答のようなスレッドでは。
728デフォルトの名無しさん
垢版 |
2020/03/07(土) 08:55:37.01ID:gWhxXX2s
ならC言語勉強するならC++もやれってことか?
2020/03/07(土) 10:45:02.41ID:XLWmxUUx
c++の方ではcとの互換性を大きな要素として挙げてるからな。
元々cの前処理での言語拡張が始まりだし。
cの方はもう切り離して一緒にされたくないだろうが。
2020/03/07(土) 16:29:47.82ID:jUFqUInS
C が C++ との非互換を最小限にするってのは大きな方針になってるよ。
少なくとも C99 の時点では。
http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=11
ただし「C を C++ にしたいわけではない」みたいな文言もある。

C2X のドラフトを見る限りでも C++ に追従すると取れる変更は結構ある。
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n2478.pdf

C++ を使う上で改めて C を学ぶ必要はないが、
仕様としてはつかず離れずを維持し続けるのは C の側も是としている。
2020/03/07(土) 16:53:11.21ID:wgBH55a3
いや、コンストラクタやデストラクタが暗黙で動く時点で全然違う言語でしょ。。
解釈を 2、3層入れてやっと表面上は同じように動くみたいな状況なわけでさ。
その辺誤魔化すからロクでもないことが起きるんだよ。
2020/03/07(土) 17:26:14.19ID:jUFqUInS
>>731
いや、もちろん違う言語だよ。 >>729

> cの方はもう切り離して一緒にされたくないだろうが。

に対して、仕様の策定では連携していく方針があるってことを言ってるだけ。
733デフォルトの名無しさん
垢版 |
2020/03/07(土) 18:33:23.15ID:RZgTMQsN
>>728
Cを使える人は(C++知らない状態からでも)C++もそこそこすぐ馴染む
C++を使ってる人(C知らない人)はCだと使えないことが多いと思う
734デフォルトの名無しさん
垢版 |
2020/03/07(土) 18:38:46.76ID:RZgTMQsN
C++2017の電子本が無料らしい
Embarcaderoからメール来た
2020/03/07(土) 20:21:56.03ID:V3yrok8D
Cから始めてC++に移行した時は
クラス・継承(仮想関数)・例外・new,deleteをもっと早く知りたかったわ
736デフォルトの名無しさん
垢版 |
2020/03/08(日) 06:17:37.40ID:OioMZJ5n
=0
737デフォルトの名無しさん
垢版 |
2020/03/10(火) 21:03:25.71ID:4I7RYXwm
組み込みシステム部に転属したくてC言語の勉強してたんだけど、使ってる言語はC++とJAVAって聞いて萎えてる。
2020/03/10(火) 21:27:52.91ID:ez/DBx9r
それならCそんな無駄じゃないような
2020/03/10(火) 21:35:56.80ID:3+CC2Qsy
C言語が出来るってのが最低条件なんだろう
ついでにその部署には「この門をくぐる者は一切の希望を捨てよ」とか書いてないか?
740デフォルトの名無しさん
垢版 |
2020/03/10(火) 21:38:36.13ID:4I7RYXwm
>>738
無駄ではないが遠回りしたような…
>>739
その部署の新人教育見てたらJAVAとC++しかやってなかった。
2020/03/10(火) 21:39:52.01ID:ez/DBx9r
まあ確かに、例えば変数の宣言がいちいちスコープの最初とか今更考えられんな
742デフォルトの名無しさん
垢版 |
2020/03/10(火) 21:40:37.65ID:4I7RYXwm
JAVAとC++ならどっちからやるべきなのだろうか
2020/03/10(火) 21:47:57.73ID:3+CC2Qsy
一か月でJavaをやりその次の一か月はC++をやる
さらに5月からはもう一度Javaをやって六月からはC++をやる
そして7月にはC言語をやる
2020/03/10(火) 21:50:37.20ID:808QYtU8
>>742
どういう組み込み機器なんだ?
javaならjavaでsmartcard制御するのか、gui作るのかでかなり違う
2020/03/10(火) 21:50:59.61ID:7t0MtDjq
>>742
両方書いている者としては、java は virtual 付きで、C++ なら p = new XXX, p->property, p->method() と書く気持ちと思想で p.property, p.method() と書いておれば間違いないです
それと、コンストラクタの書き方、基底クラスの呼びかたは毎回お手本をみています
両方同時にやって混乱するようではセンスを疑います
746デフォルトの名無しさん
垢版 |
2020/03/10(火) 21:59:27.15ID:EBgJJlCp
C++対応してるプロゲートみたいなサイトってないの?
2020/03/10(火) 22:01:39.03ID:rLdwFfVF
俺、変数宣言は関数の頭じゃないとコンパイル通らない環境なんだがw
GUIつうかOSからして無いんだがw
組み込みってひとまとめに言っても範囲広すぎるからもう少し具体的な情報無いとアドバイスしづらいよね
2020/03/10(火) 22:07:13.07ID:3+CC2Qsy
相互参照がかんたんな方からやればいいんだよ
2020/03/10(火) 22:18:40.36ID:HIU8QCM9
>>747
C99 に対応してないコンパイラってことか。
理屈の上では実際のメモリの確保は関数の頭にまとめてしまえばいいから
実行時のリソースが限られていても関係なく出来るはずなんだが、
マイナーな環境だとコンパイラもまともなものがなかったりするんだよな……。
2020/03/10(火) 22:20:49.11ID:808QYtU8
>>743
おれとしてはc++から始めることをおすすめするな
javaから入るとc++でもjavaの作り方をずっと引きずる
そういう人数多く見てる
それだと組み込みでつらい場合が考えられる
ただしc++極めるのはまず無理なので
適当なところで打ち切る必要はある
751デフォルトの名無しさん
垢版 |
2020/03/10(火) 22:22:24.15ID:EBgJJlCp
C++勉強するなら江添亮のやつがいいのか?
2020/03/10(火) 22:37:05.22ID:7t0MtDjq
>>751
かつては、旧版独習C++ でstd::string を再実装する練習問題に出会うまで黙々と読んでいくことを薦めていましたが、確かに今となっては旧版独習はC++が古過ぎるでしょうね
江添さんは、私も今読んでいる最中です、もう少ししたらお勧めできるかどうかわかるかと思います
753デフォルトの名無しさん
垢版 |
2020/03/10(火) 22:58:14.28ID:4I7RYXwm
ありがとう
2020/03/10(火) 23:02:41.52ID:rLdwFfVF
>>749
コストのためにハードが固定化され、ハードが決まってるからCPUも固定でコンパイラもそれに依存
ハードの更新なんて5年に1回あるかどうかだし、更新されてもROM容量が16MBに増えました!程度とかだしねぇ

ツール類はPC上で動けばいいからそっち方面触ってないと技術的に取り残される
つっても未だにMFCで新規ツール作るような人もいるけどねw

まぁ業界によってはこんな組み込みだって居るんだよって程度で
755デフォルトの名無しさん
垢版 |
2020/03/10(火) 23:27:10.68ID:EBgJJlCp
江添亮VS柴田望洋
2020/03/10(火) 23:41:21.31ID:HIU8QCM9
>>751
新しい仕様も考慮しているまともな C++ 入門書は少ないのでその中では十分に良いと思う。
紙でなくてよければ無料で読めるし、とりあえずこれで始めても損にはならんのじゃないかな。
https://ezoeryou.github.io/cpp-intro/
2020/03/11(水) 00:14:52.72ID:EKM5ywjJ
>>751
江添亮の本は、勉強用じゃないw
プロが見て、あれこれ議論する土台になる本

10年以上やっていないと、まず読めないw

どの言語でも、勉強用は「Effective 何々」
2020/03/11(水) 00:27:33.10ID:FbH1Tm9+
>>757
それはひょっとして「江添亮の詳説C++17」と混同してない?

「江添亮のC++入門」は初心者が基本的なツール (make やコマンドライン) の使い方さえわかってないからってんで、
そのあたりから記述している上にクラスの継承を説明しないという思い切った簡略化をしてる本だぞ。
759757
垢版 |
2020/03/11(水) 02:06:23.50ID:EKM5ywjJ
C++11/14 コア言語、江添 亮、2015

この神の書と勘違いしたw

江添は、素人向けの本も、出しているのか
760デフォルトの名無しさん
垢版 |
2020/03/11(水) 02:43:05.64ID:zwwCe0yv
hageで安全靴履いてリュック背負ってると職務質問される的なスキルが身に着く
2020/03/11(水) 09:42:39.53ID:QiiPQnMP
江添のあれ、糞本だろ。。
初心者はそんなとこでつまづかねーよってところにばかり無駄な記述を付け加えてるっていう。。
センスねーわ。
762デフォルトの名無しさん
垢版 |
2020/03/11(水) 10:20:19.09ID:f25IEtU6
炎上商法に釣られてると売り上げが伸びちゃいますよ?
2020/03/11(水) 13:07:41.95ID:EKM5ywjJ
江添は職務質問で、大勢のポリ公に囲まれて、その場で監禁されたとかで、
今、警察を訴えているのだろ

警察はボーナスが欲しいから、誰でも犯人に仕立て上げるから、危険!

漏れも昔やられた。
パトカーに止められて、アルコール検知器に息を吐いても、ランプが点かなかったのに、
ポリ公がクルッと後ろを向くと、ランプが点いた!

何のことは無い。
そのポリ公が酔っ払いで、息を吹きかけていたw
後輩の若いポリ公も、グルだった
2020/03/11(水) 14:07:13.44ID:dMLI4DK7
知能低そう
765デフォルトの名無しさん
垢版 |
2020/03/29(日) 00:51:11.45ID:yk11UhYR
何を作ったら一番C++の勉強になるんだ?
2020/03/29(日) 00:56:17.78ID:c4x4s1tb
ビットマップ画像のファイルパスを入力したらそれにブラー処理を施して出力するコンソールアプリ
2020/03/29(日) 01:24:25.56ID:GFdzppn9
C++使いのみなさんはC++以外だったら何の言語が好きなんですか
もしくは次何覚えたいですか
2020/03/29(日) 01:40:31.93ID:6ELGM9SE
>>767
GUIはC++でやるのつらいからC#をよく使う
2020/03/29(日) 01:52:28.90ID:t2YV962W
>>765
競技プログラムのクソコードのリファクタリング。
2020/03/29(日) 02:37:01.61ID:tSgWoZoj
競技プログラミング界隈だと #include<bits/stdc++.h> とか using namespace std; が普通になってるのが本当に嫌なんだよな。
AtCoder がそれを推奨しているのは「そこでつっかえて先に進まないよりは良い (競技の上では問題ないことが多いし)」みたいな
ニュアンスだし、ちゃんと理解してちゃんと書くならそれに越したことはないはずなんだよ。
2020/03/29(日) 02:53:17.00ID:tSgWoZoj
>>767
ワイは Scheme が好きで日常的には C++ より使うなぁ。
興味があるのは Rust。 入門書を読みながら色々といじって遊んでる。
2020/03/29(日) 04:41:47.48ID:b/iWTQc8
そらトリップにSCHEMEいれてるぐらいやしの
2020/03/29(日) 09:44:17.77ID:c4x4s1tb
https://pbs.twimg.com/media/EUH_eMWUwAAgsV4.jpg
774デフォルトの名無しさん
垢版 |
2020/03/29(日) 10:05:56.36ID:vg0TAzW0
二重言語であり真顔で「わたくしはC言語を極めました」と言えるのが第一関門
2020/03/29(日) 12:55:27.64ID:Kzf4aDfw
>>771
Rustの入門書はどれがお勧めですか。
Box<T>や、Option<Box<T>> の代入や参照について詳しいものがあれば幸いです。
776デフォルトの名無しさん
垢版 |
2020/03/29(日) 15:54:38.44ID:7B/pleQ/
>>765
そういう視点より自分が何を造りたいかを考えろ
777デフォルトの名無しさん
垢版 |
2020/03/29(日) 15:55:46.75ID:7B/pleQ/
>>767
Python
C#
D
Go
Nim
2020/03/29(日) 16:08:26.57ID:GnieE+99
>>767
>C++使いのみなさんはC++以外だったら何の言語が好きなんですか
C です

>もしくは次何覚えたいですか
classpath を C++ に移植したいです
2020/03/29(日) 18:35:29.30ID:Kzf4aDfw
>>778
Javaのclasspath相当の機能をC++に移植したいということかね。
2020/03/29(日) 20:08:59.77ID:GFdzppn9
>>768,771,777,778
どうも
色々ご意見ありがとうございます。みな人それぞれですね

>>773
さすがねねっち
781デフォルトの名無しさん
垢版 |
2020/03/30(月) 14:36:39.18ID:cpVmKDV2
C/C++ で OpenGL とか Tck/Tk とかやるとオブジェクト指向ωの有難さωωが判るωωω
2020/03/30(月) 19:25:06.14ID:Oymj8mf6
>>781
OpenGLが使いにくいという意味で言ってるなら、使いにくくなったのは OpenGL 2.0
以後に入った部分のみだ。
OpenGL 1.0 は非常に美しく人気が有った。
ところが、Direct3Dに対抗するためか、高速化やShaderの導入のために
2.0では非常に使いにくい方式を追加してしまった。

ややこしいのは、WebGL や OpenGL ES は、その 2.0 の部分だけをベースにしてしまったため、
美しい OpenGL 1.0 とは互換性が全く無い。
だから、WebGL や OpenGL ES から入った人は、OpenGLといえば、その使いにくい関数セット
の方しか知らないから、OpenGLは使いにくいと思ってしまっている。
2020/03/30(月) 20:57:38.25ID:3vRJi0Dq
OpenGLって昔のやつは使いにくいぞ
2020/03/31(火) 01:07:28.66ID:Yt3qMdaP
>>783
逆、昔のが使い易いから人気が出て標準の座を勝ち取った。
当時、OpenGL は、3Dを凄くよく理解している人が設計したといわれていた。
ところが、OpenGL 2.0 は高速だが使いにくくされた。
2020/03/31(火) 09:24:13.17ID:Ow5tuxOJ
ハードウェアの種類が減ったんだよね。
その分だけ低レイヤまで踏み込ませても互換性が維持できる……
かと思いきや割とそうでもないな? みたいな闇が出来てしまった。

元から低レイヤを触る人にとってはハードウェアに近いところまで触れる方が使いやすいってのは
普通にあることなので、 API が綺麗なのが使いやすいというのは思い込み。
その人の経歴による。
2020/03/31(火) 10:06:09.54ID:vx6/o4d4
例のRuby君のことだから、自分で理解的ないものは難しい、使いにくい、汚いと非難の対象にしているか、もしくはどこかで聞き齧った意見をそのまま受け売りで垂れ流すだけ。
いずれにせよ聞くに値しない。
2020/03/31(火) 10:06:35.13ID:vx6/o4d4
理解的ない→理解できない
788デフォルトの名無しさん
垢版 |
2020/03/31(火) 15:44:37.42ID:uFliupP+
機械工学部なんですが、授業で扱うレベルが初歩の初歩のみで
独学するにもどういうところから勉強すればいいのかわからず困っています
将来的にロボットを動かしたりするための知識を学ぶおすすめの教材とかありますか?
789デフォルトの名無しさん
垢版 |
2020/03/31(火) 16:11:50.19ID:uDSFrRRV
電気・電子板へgo!
2020/03/31(火) 16:21:47.06ID:y4yBR0M3
>>788
Arduino
2020/03/31(火) 16:29:23.37ID:daGoeiYK
>>786
そうじゃない。
俺は3Dを専門にやってきた。
792デフォルトの名無しさん
垢版 |
2020/03/31(火) 18:09:22.14ID:fXRU3fg2
>>785
いや、書き方に夜がOpenGL 2.0以後は初期設定だけで200行を超えるくらいある。
それに比べて、OpenGL 1.0は、最初、お決まりの数行の初期化のあとは、
glBegin();
glVertex3f(x1,y1,z1);
glVertex3f(x2,y2,z2);
glVertex3f(x3,y3,z3);
glEnd();
glFlush();
程度でポリゴンが1枚書ける。
このコードを見ればマニュアルを見なくてもなんとなくやってることが分かるだろう。
それと、行列計算がとても判りやすくできるようになっている。
2020/03/31(火) 18:33:37.31ID:aMyLRkM9
hello world的なプログラムなら1.0が楽だが、まともなアプリやゲーム作ろうとしたら、一々頂点定義していくのは面倒なだけ
しかも性能落ちる
2020/03/31(火) 18:36:35.46ID:chhHfIYK
一見簡単に見えるだけ
問題だらけのAPIデザインだよ
とにかくそんな遠い過去の技術どうでもいいから
2020/03/31(火) 18:46:15.18ID:fXRU3fg2
>>793
2.0 は初期化時の
glBindBuffer(), glBufferData(), gl.bufferSubData()
が特に難しい。
STATIC_DRAW, DYNAMIC_DRAW
の違いや、glBufferData(), bufferSubData() の違いとか。
2020/03/31(火) 18:50:55.69ID:fXRU3fg2
>>794
なら、あなたは何推しなの?
2020/03/31(火) 18:55:52.92ID:Ow5tuxOJ
>>792
お前は俺の言うことがわからないということがわかった。
2020/03/31(火) 19:06:18.63ID:L/5UA51D
htmlも昔の方が良かったって人なんだろうね
cssとか理解できないんだろう
2020/03/31(火) 19:12:17.41ID:chhHfIYK
使い物になるだけD3Dの方がまし
OpenGLは初期のAPIデザインひきずって最後までマルチスレッド対応できなかった
拡張性が高いとか言われてるけど
ベンダ依存多くて互換性なんかほとんど期待できない
初心者が一ヶ月学んで卒業するための
教育用の価値しかない
こんなのにしがみついてどうする
2020/03/31(火) 20:05:53.51ID:BqWL8gxf
ハゲドゥ
801デフォルトの名無しさん
垢版 |
2020/03/31(火) 20:19:39.98ID:Sf1iuZK0
>>792
glBegin/glEndがdeprecatedになって、VBOを使うようになってわかりにくい、という主張はわかるけど、
2.0だと初期設定だけで200行必要というのと1.0は初期化の後はglBegin/glEndでポリゴンが書けるというのは、
対応してないところを比較している気がしてしまう。

それに、GLFWなんかを使わずに素のOpenGL APIを使って初期化するなんてこと今どきある?
2.0になってややこしくなったのは、世界が複雑になったのだから仕方のないことだと思うんだけど。

OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
見えない状態になってしまっていることじゃない?
2020/03/31(火) 20:21:22.12ID:1hnfAhIg
シェーダーとかなしで
グラフを書くだけの用途だから OpenGL1.0でごりおしだな

※ glBegin の対の glEnd を忘れて頂点バッファ漏らすのを ラッパークラスで回避する程度
2020/03/31(火) 20:57:23.49ID:BqWL8gxf
OpenGL 2.0 専用スレ
http://mevius.5ch.net/test/read.cgi/tech/1126268759/
2020/03/31(火) 21:29:07.74ID:l+T/nNRF
GLFWなんて使うのは試作や使い捨てツールとかくらいだと思ってた。
2020/03/31(火) 23:22:06.63ID:hFZHkIvl
つーか昔はフレームバッファに書きこんだところにドットが表示されてすっきりしてわかりやすかった
今は全部GPUにふくざつなめいれいを送らないとドットひとつ打つのも大変だから昔のほうが良い
みたいな議論
2020/03/31(火) 23:25:55.16ID:vx6/o4d4
できることが増えただけで今でも昔のやり方をしたいなら(それで事足りるなら)、昔ながらのやり方をすればいいだけだと思う
2020/03/31(火) 23:28:34.45ID:L/5UA51D
imx6でframebuffer上にcv::Mat作って直接弄ったら表示されたときはなんかすごく懐かしかったよ
808デフォルトの名無しさん
垢版 |
2020/04/01(水) 10:16:21.36ID:5VJq6KKK
>>801
>OpenGLの一番良くないところは、ハンドラが引数になくて、操作されるコンテキストがどれかということが
>見えない状態になってしまっていることじゃない?

ほんそれ

python の matplotlib にも同じ違和感を感じる(重箱)
809デフォルトの名無しさん
垢版 |
2020/04/01(水) 10:18:19.76ID:5VJq6KKK
>>804
オレオレルール上は glut までですね判ります
2020/04/01(水) 11:06:09.53ID:15FH3/nz
>>808
さすがにそういう30年ぐらい前のAPIデザインはいけてないってことで
direct state accessが導入されたんだけど、中途半端でぐだぐだ
2020/04/01(水) 16:12:02.61ID:bFLEHtBu
教えてください。
三項演算子

auto a=1;//なんでもいい
a?return 0:return -1;

なんでコンパイルエラー?
2020/04/01(水) 16:12:55.86ID:S74lm4t5
>>811
return は文であって式ではない。
2020/04/01(水) 16:13:30.82ID:x/Ef9YKS
>>811
return は式じゃないから
2020/04/01(水) 16:14:38.38ID:9AsYpIKM
あっ被った
なので解決策書いとく
return a ? 0 : -1;
■ このスレッドは過去ログ倉庫に格納されています