C++に関するNao_uのブックマーク (172)

  • Boehm GCを使おう

    はじめに CやC++である程度大きなプログラムを書く場合,最大の問題点は メモリ管理である.複雑なプログラムの場合,必要なメモリの量を あらかじめ見積っておくのが難しいから,メモリが必要になった 時点でメモリを確保し,不要になったらそれを解放するという プログラミングスタイルが一般的だ.Cで言えばこんな感じだ. char *x; ... x = (char*)malloc(n*sizeof(char)); ... x を使って仕事をする ... free(x); このプログラミングスタイルの問題点は,おおまかに言って こんなところだろう. free(x) を忘れると,プロセスがどんどん大きくなってしまう. free() してはいけないものを間違ってfree()する(たとえば,同じ メモリを2回 free() してしまうとか)と,その free() の中でなく, 全然違う場所でエラーが発生す

  • 継承を禁忌すること - Radium Software

    IS-A IS-A HAS-A - Raganwald IS-STRICTLY-EQUIVALENT-TO-A - Raganwald OOP に関する書籍を読むと,たいてい「継承は軽々しく使うべきではない」というようなことが載っている。「継承は IS-A の関係にのみ使うべき」とか,「実装の共有に継承を使ってはならない」とか,「継承よりも合成・包含を優先すべき」とか……。 それが Raganwald に言わせれば,「IS-A の関係は HAS-A の関係と同じこと」とか,「継承は便利機能に過ぎない」とか,「リスコフの置換原則さえ生ぬるい」というような厳しい意見にまでなる(こんな風に言い切ってはいないけれど……まあ,そのようなことを丁寧に説いている)。 このような,制限の無い継承を禁忌する意見は,一般に納得することのできる内容ではある。ただ,それを現場で適用するのは,非常に難しいことのよう

    継承を禁忌すること - Radium Software
  • C++言語 パフォーマンス - redstrange Wiki*

    何か気付いた点があれば、追記をよろしくお願いします。 参考 http://www.open-std.org/JTC1/SC22/WG21/ http://www.open-std.org/JTC1/SC22/WG21/docs/TR18015.pdf http://www.s34.co.jp/cpptechdoc/article/sizeof/index.html 参照 - reference 自前のクラスなどの場合、参照を使う方が早い 組み込みの型の場合、参照を使わない方が早い 名前空間 - namespace 名前空間が、パフォーマンスには影響を与えることはない。 メモリ的にも実行速度的にも。 ただし 関数などの識別子を短くすることの妨げになることがある メモリ上の配置が変わる可能性もある キャスト - cast C表記、C++表記いずれにしても一時的なオブジェクトが作られる可能性があ

    C++言語 パフォーマンス - redstrange Wiki*
    Nao_u
    Nao_u 2008/06/06
  • L'eclat des jours(2008-05-27)

    _ わざとバグを入れたCの入門書 翔泳社の編集の方から献していただいたので、読んでみました。 デバッグではじめるCプログラミング(山 貴光) 今更、おれが読むでもないしと思わないでもなかったけど、読んでみるものだ。おもしろかったし、参考になった点もあった。 全体としてはゲームを作るで、BC++をCで使うことを前提にしている。なぜBC++と大きい疑問を感じたけれど、エラーメッセージの適切さが理由のようだ(とは書いていないが)。 最初に、簡単な出力、入力があって、ちゃんとカタカナでprintfはプリントエフと読みますとか、scanfはスキャンエフと読みますとか読み方も指南している。 で、ゲームを作るというのはどういうことかという読み物ふうのエピソード(著者の方は光栄に勤めていたらしい)が来て、企画とおおざっぱな仕様が来て、では実装していきましょうと話が続く。 で、リストをその通りに打た

  • C++で読むデザインパターン(Design Patterns read by C++)

    Nao_u
    Nao_u 2008/05/16
  • 「【C言語】二次元配列の動的確保」(1) Insider.NET - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

    Nao_u
    Nao_u 2008/05/13
    「C言語で単純に2次元配列を動的に使いたいのであれば、配列型をtypedefすることで比較的わかりやすく使うことが出来ます。 」
  • [C++][C++0x]structual よりも non-intrusive だと思うにゃー - Cry’s Diary

    http://www.kmonos.net/wlog/85.html#_0905080505 う〜ん, structural かどうかではなくて non-intrusive かどうかっていう軸の方が重要だと思うんですけれどどうなんでしょうかねー. non-intrusive という言葉を明快に定義してくれている書籍なりサイトなりが少なくてアレなんですが,オレオレな理解で行くと, non-intrusive とは,あるデータ型 T が何らかの制約 (これこれこういうインタフェイスを持ってないといけないよ,という決まり) を満足しているかどうか,に関する記述が T の定義と独立に記述することができる,あるいはもはや制約の充足に関する記述自体不要,ということだと理解しています. 歴史的な流れでいうと STL の存在が大きいのはこれは k.inaba さんの指摘どおりだと自分も思っていて,たとえば

    [C++][C++0x]structual よりも non-intrusive だと思うにゃー - Cry’s Diary
    Nao_u
    Nao_u 2008/05/08
  • cri-ch.tv [13]

    Nao_u
    Nao_u 2008/05/07
  • cri-ch.tv [15]

  • 中の人がどう思っているかと,外からどう思われているか - NyaRuRuが地球にいたころ

    「C# とか C++ とか」って書いてあったので反応してみた. 順調に遅延中 正直、C なんかを書いていると、変数に型があって、いちいちそれをかかされることについて、(LL的な意味で)「重いなぁ」とはあんまり思いません。もう「どっちでもいいじゃん」って感じ。Perl と C を比べたとき、静的型とか動的型とか大して「軽さ」に影響してないよね?、と思います。 が、C# とか C++ とかを使っていると、静的型があるのが苦しくて苦しくて仕方がない。もう、「こんなにも・・!!、こんなにも苦しいのならば型などいらぬ!!」(by *「ふっかつのじゅもんがちがいます。」さん)ってくらい苦しくて苦しくて仕方がありません。 これは単純にポリモーフィズムのお話で、静的型付け というよりは、nominal subtyping が脳のリソースを大きく引っ張っていく割に、作りたいことの質ではないから。動的型付O

    中の人がどう思っているかと,外からどう思われているか - NyaRuRuが地球にいたころ
  • 言語の進化について語る Bjarne Stroustrup 氏

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Interview++ Bjarne Stroustrup on the Evolution of Languages Howard Dierking Contents Thoughts on Language Language Trends Methodology and Best Practices Looking toward the Future Books and Phones Every once in a while, an evolutionary leap rapidly advanc

    言語の進化について語る Bjarne Stroustrup 氏
  • ce-lab.net

    This domain may be for sale!

  • Fail-Safe C: Top Page

    Fail-Safe C は、メモリ安全性を保証する ANSI C 言語のフルスペックの実装です。 ANSI C 言語の仕様で定められた全てのメモリ操作(キャストや共用体を含む)に対し その安全性を保証し、全ての危険なメモリアクセスを事前に検知し防止します。 Fail-Safe C では、コンパイル時や実行時の様々な最適化手法を組み合わせる ことで、実行時検査のオーバーヘッドの削減を行っています。このコンパイラ を用いることでプログラマは、既存のプログラムを大幅に書き換えたり別の言 語に移植したりすることなく、そのままプログラムを安全に実行することがで きます。 詳細については次の文献もごらん下さい。 Yutaka Oiwa. Implementation of the Memory-safe Full ANSI-C Compiler. ACM SIGPLAN Conference on P

    Nao_u
    Nao_u 2008/04/16
  • 配列の要素数を知る | 移植性のあるCプログラミング

    一定期間更新がないため広告を表示しています

    配列の要素数を知る | 移植性のあるCプログラミング
    Nao_u
    Nao_u 2008/04/11
  • const じゃない参照渡しはするなってばっちゃが言ってた - 好き勝手に・げーあにん?

    はてなダイアリー 参照が使えるときはいつでも参照を使いましょう - 神様なんて信じない僕らのために イネスさん - みねこあ 私は constの時は参照を使って、それ以外はポインタを使いましょう派です。中身を読むと、言ってることは、id:Isoparametricさんとほぼ同じ(?)なんですけどね。「いつでも」というタイトルに釣られたw Hoge* huga(Hoge *pOut, const Hoge &in); こうしとくと、呼び出し側の見た目が huga(&a, b); みたいになるので、アドレスを渡してるほうは、関数内で値が変わる。参照を渡してるほうは、constだってすぐわかる。 ‥‥っていうのを最初にバイトで入った会社で知って、それ以来ずっとこのルールで書いてる。 まぁ、これだと戻り値どうするの?って聴かれると結構困るんですけどね。それはまた別の話し。演算子オーバーロードとの兼

    const じゃない参照渡しはするなってばっちゃが言ってた - 好き勝手に・げーあにん?
    Nao_u
    Nao_u 2008/04/04
  • コンストラクタが呼ばれた時点で初期化が終了してないとイヤだってじっちゃが言ってた - 神様なんて信じない僕らのために

    クラスのメンバ変数を参照で持つことは、私んちはそんなにしていません。 参照でHoldするメンバがいる場合、必ずコンストラクタ初期化子で初期値を指定してあげなくてはならないのですが、私んちは、initialize(と言う名前のただのメンバ)関数で依存性注入するスタイルが多いので、Null になれないのがかえって邪魔になってしまうから。なので メンバは shared_ptr で保持ることが多いです。 イネスさん - みねこあ (゚∀゚)人(゚∀゚)ナカーマ initialize とか作るのまで同じだ。shared_ptr なんてリッチ(?)なもの使わずに自前管理ですけどね。 const じゃない参照渡しはするなってばっちゃが言ってた - 好き勝手に・げーあにん? initialize派が多いのかしら! 僕はコンストラクタが完了した時点で、 そのインスタンスはオブジェクトとして扱える状態になって

    コンストラクタが呼ばれた時点で初期化が終了してないとイヤだってじっちゃが言ってた - 神様なんて信じない僕らのために
    Nao_u
    Nao_u 2008/04/04
  • WhyINoLongerLikeOrUseCPlusPlus - もう C++ なんて好きでもないし使いもしない理由。

    WhyINoLongerLikeOrUseCPlusPlus - もう C++ なんて好きでもないし使いもしない理由。 目次 この文書について もう C++ なんて好きでもないし使いもしない理由。 もう C++ なんて好きでもないし使いもしない理由。 この文書について "Why I No Longer Like or Use C++" の日語訳です. http://prophipsi.blog-nospam-spot.com/2008/03/why-i-no-longer-like-or-use-c.html -nospam- は削除してください... 推敲歓迎: 誤訳, タイポ, 訳語の不統一, そのほか... 今日、 Artima に上がっていた C++ の記事を読んだ。右辺値参照(rvalue reference) という C++ の新機能について解説するものだ。頑張って読むうち

    Nao_u
    Nao_u 2008/04/01
  • C++ と const 参照 - NyaRuRuが地球にいたころ

    数年前,まだ私が C++ゲームを書いていたころ,深すぎる関数のネストは「一旦変数に入れ」て「読みやすくする」というコーディングスタイルにだいたい落ち着いていた.もちろん,「これは一旦別名を付けるだけで,変数に再代入する気はないよ」ということで const も付ける.ただあまり大きなデータのコピーは嫌だよねということで,戻り値が std::string や構造体の関数呼び出しを「一旦変数に入れる」ときは const 参照を好んで使っていた. A(B(C(a), b, D(E(c), d, e))); 「む,なんて読みにくいコード.ばらせよ」 const int target_id = C(a); const MessageBody& message_body = D(E(c), d, e); const Message& msg = B(target_id, b, message_bod

    C++ と const 参照 - NyaRuRuが地球にいたころ
    Nao_u
    Nao_u 2008/03/25
  • [c/c++]死に至る言語

    →元ネタ  漢の言語 - みねこあ C++の何が難しいって、わかってないのに解ってるという奴が多いとか、実は自分もわかってませんとか、 そもそも適当に書かれると依存性高くなり過ぎなんだよ、バーロー。 ヘッダにちょっとメンバ関数を付け加えたら、 500ファイルビルドにいくとか阿呆だろ、バーロー。 リンクも時間かかりすぎなんだよ、 どうなってんだ、バーロー。 でも、そこが好き。(←頭に蛆虫がわいてきた) と、まさにid:minekoaさんも書かれているように、 C++は下手に書くと依存性が莫迦みたいに増える言語であり、 それをいかに低下させるかは永遠の課題と思われる。 記述順とかにこれほど気を遣う言語は他にないよね! 例えば、Pimplのようなコンパイラファイアウォールテクニックなどもあるが、 なかなかそううまくはイカンザキ、 であり、 friendともなかなか仲良し度を下げられない言語でもあ

    [c/c++]死に至る言語
    Nao_u
    Nao_u 2008/03/12
  • C言語のソース実装 - Florian’s NewestDiary

    id:minekoaさんの以下のエントリーを読んでつらつらと。 [C++] 漢の言語(http://d.hatena.ne.jp/minekoa/20080310/1205146973) 一時期、何でもかんでも巨大なライブラリアーカイブ(.a,.lib)に放り込むというコーディングスタイルを持っていた時期がありました。 結構いろんなメリットがあって、 ライブラリ自体が巨大でも、ライブラリ内のモジュール依存性が低いと実際にリンクされるのは一つだけ。 C言語はエントリーポイントを一つしか持てないので、ユニットテストがやりづらいのを切り分けられる(番時もmain関数のみのソースをリンクするのみ) コンパイルの時間が省略される まぁ、生でC言語を触ることが極端に減ったのでこの辺の好みは今となってはあまり生かされていないのですが、他にもこんな方針を同時に立てていました。 関数は1画面以内。それも、

    C言語のソース実装 - Florian’s NewestDiary
    Nao_u
    Nao_u 2008/03/11