タグ

C++に関するtanakaBoxのブックマーク (158)

  • 脆弱性体質の改善 ――C/C++セキュアコーディング入門(1)

    はじめに 皆さんこんにちは。JPCERTコーディネーションセンターという組織でセキュアコーディングに関する取り組みに携わる筆者らが、これからこの連載を担当させていただくことになりました。どうぞよろしくお願いします。なお、JPCERTコーディネーションセンターは、情報セキュリティインシデントへの対応支援や、ソフトウエアの脆弱性(いわゆるセキュリティホール)に関する製品開発者間における公開日の調整や関連情報の公開なども行っています。 この連載では、バッファーオーバーフロー等の脆弱性をうっかり作り込んでしまったがために、数千万円ものコストをかけて、ユーザに告知し、製品を回収して、工場でファームウェアをアップデートする事態に陥ったり、あるいは脆弱性を放置してユーザを危険にさらし、それが明るみに出て「世間を騒がす」ことになったりしなくても済むように、そもそもの製品開発時からセキュアなプログラムを書く

    脆弱性体質の改善 ――C/C++セキュアコーディング入門(1)
    tanakaBox
    tanakaBox 2009/12/15
    CERT C セキュアコーディングスタンダード
  • C++におけるスマートポインタとシリアライズ~boostライブラリにパッチが採用されるまで~|オブジェクトの広場

    記事は、筆者がプログラミング言語C++を用いてソフトを開発している際に遭遇した問題と、その解決までをまとめたものです。 現在のC++プログラミングでは、多くの場面でBoostライブラリを利用します。今回筆者は、動的なオブジェクトのライフタイムを自動的に管理するためにboost::shared_ptrおよびboost::weak_ptrを、オブジェクトを保存・復元するために、boost::serializationのライブラリを利用しました。そこで予想外の問題に遭遇し、Boostにバグ報告し、解析を行い、最終的にパッチを送り、それが採用され、線にマージされることになりました。その過程で、普段利用しているだけでは意識することのない、Boostライブラリの実装の工夫を垣間見ることになりました。そのあたりの情報も交えながら、いったいどんな問題にぶつかり、どうやって解決したのかを紹介したいと思い

  • すべてのサブクラスの virtual メンバ関数上で virtual 宣言を使う - C++ Portability Guide - MDC

    この後に、多くのマシンやコンパイラを横断して移植可能な C++ のコードを作る上で役に立つ規則・ガイドライン・TIPS の集まりが続きます。 この情報は、25 にものぼる異なるマシンと1ダース分以上の C++ コンパイラを横断して多くのコードを移植した結果として生まれたものです。これらのうちいくつかはあなたを苛立たせ、もうお手上げだと感じて「えい、<愛用の C++ 機能を追加>できないのはヘボコンパイラだ」と叫びたくなるかもしれません。しかし、これが移植性の高いコードの現実です。あなたがルールを守るなら、あなたのコードはすべての Mozilla プラットフォーム上でシームレスに動作し、新しいマシンへの移植も容易となるでしょう。 私たちは情報を最新に保つよう努力しています(例えば、ときどきコンパイラの改定で制約が取り除かれるかもしれません)。これらの tips に関する最新情報や、追加の情報

  • Big Sky :: C++で匿名関数をコールバックに使う。

    C言語ってlambdaが書けないのでGUIのコールバックなんかを作る場合には関数を用意しなければならないのですが... Lambda abstractions in C++ vs. Scheme 1. Simple lambda-expressions #define Lambda(args,ret_type,body) \ class MakeName(__Lambda___) { \ public: ret_type operator() args { body; } } http://okmij.org/ftp/c++-digest/Lambda-CPP-more.html なるほどねー。これなら Lambda((int a, int b), int, return a+b) foo; std::cout << foo(1, 2) << std::endl; // 3 こんな書き方も

    Big Sky :: C++で匿名関数をコールバックに使う。
    tanakaBox
    tanakaBox 2009/11/01
    ほうほう。
  • 1+1=2 を証明(C++で) - d.y.d.

    01:29 09/10/28 七不思議HA 七不思議ハードオオイカリパッチ深遠100F到達しました。 やった! (→ リプレイファイル) サブ剣に 日刀[封必-脱封守]+17。盾は深層で[潰][爆][祓]を順次追い出して左のスクリーンショットが最終形。 [冷]も消してよかったな。保存の壺フィーバーが来たのでなんとかクリアできた感じでした。 普通の引きだと70F前後で大抵力尽きる。 普通にバランスのとれてるノーマル版に、 ・シレンで言うところのカンガルー3種を投入し ・主人公LVアップ時のHPと攻撃力の上昇量を減らし ・床落ちアイテム数を減らし敵のドロップ率も減らし、 たらどうなるでしょうかというパッチ。このゲーム4倍速まで上がるのでオオイカリ状態がより一層ヤバい。 代わりに幾つかの印の効果が強化されてて、レアアイテム出現率がやや上がっているので、 その辺りを鍵に頑張ることになります。 ト

    tanakaBox
    tanakaBox 2009/11/01
    1+1 = 2 を「証明」してみる。C++ で。
  • 変電工 - Google C++スタイルガイド日本語訳

    国产亚洲欧美日韩在线一区二区三,AV蜜桃,中文乱码人系列一区二区,乱中年女人伦视频国产,男女性高爱潮是免费国产,国产成人精品三上悠亚久久,果冻传媒AⅤ毛片无码

  • C++ Style Guide

    Benjy Weinberger Craig Silverstein Gregory Eitzmann Mark Mentovai Tashana Landray This style guide contains many details that are initially hidden from view. They are marked by the triangle icon, which you see here on your left. Click it now. You should see "Hooray" appear below. Hooray! Now you know you can expand points to get more details. Alternatively, there's an "expand all" at the top o

  • C++ code completion

    This tip describes how to use C++ code completion in Vim (omni completion). When editing a C++ file, enter the command :set omnifunc? to see what completion function is currently used. If the result is omnifunc=ccomplete#Complete, it means you are using the C completion provided with Vim (not C++). If your :set omnifunc? is not set as desired or maybe empty this is a good workaround for C++ files:

    C++ code completion
    tanakaBox
    tanakaBox 2009/10/20
    C++の補完設定例
  • C++リファレンス - cppreference.com

    スマートポインタとアロケータ 日付と時間 関数オブジェクト  −  hash (C++11) 文字列変換 (C++17) ユーティリティ関数 pair  − tuple (C++11) optional (C++17)  −  any (C++17) variant (C++17)  −  format (C++20)

    tanakaBox
    tanakaBox 2009/10/20
    まだ未完っぽい
  • C/C++ から Ruby を動的に扱う « ますぽんの雑記

    RubyPython とよく比較される国産のインタプリタ言語で、文字列の扱いに定評があります。オブジェクト指向で、モジュール、クラス、例外処理、ガベージコレクション等最新の機能は一通り揃った魅力ある言語です。今回は、これを前回と同じように C/C++ から動的に扱ってみます。まずは、C/C++ から Ruby スクリプトを呼んでみます。 #include <Ruby/ruby.h> const char *script = "def multiply(x,y)\n" " return x*y\n" "end"; int main(int argc, char *argv[]) { VALUE value; ruby_init(); // スクリプトの読み込み rb_eval_string(script); // スクリプトの実行 value = rb_funcall(Qnil,rb_

    tanakaBox
    tanakaBox 2009/10/20
    案外簡単なんだなぁ。
  • C++: 水面下の仕組み - Microsoft Visual C++ Web Site

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    C++: 水面下の仕組み - Microsoft Visual C++ Web Site
    tanakaBox
    tanakaBox 2009/10/10
    面白い。
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
    tanakaBox
    tanakaBox 2009/10/10
    物凄いまとめ
  • C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す

    C++0Xの新機能が搭載されたVisual Studio 2010 Microsoftの開発者向け技術情報サイト「MSDN」では、Visual Studio 2010 β1 がリリースされています。IDEがWPFで作られていたり、.NET Frameworkのバージョンが上がっていたりと、Visual Studio 2010では様々な変更/拡張が施されているようですが、C++屋の筆者としては、Visual C++が部分的にせよC++の新規格(通称C++0X)の新しい機能を積極的に取り入れていることが、とても嬉しく思います。 Visual C++ ver. 10に追加されたC++0Xの新機能のひとつ、「ラムダ式(lambda expression)」を少しばかり触ってみましょう。 関数オブジェクトとは C++templateをサポートし、それにあわせてSTLに代表されるテンプレート・ライブ

    C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
    tanakaBox
    tanakaBox 2009/09/13
    角括弧から始まるのか。ふむふむ。
  • 次期C++に導入されるメモリバリアについて解説してみる - yamasaのネタ帳

    前のエントリで次期C++標準(通称C++0x)にatomic型とメモリバリアが導入されるという話をしました。今回はそのC++での実装について、もう少し深く追いかけてみます。 スライド資料では「atomic操作 + acquire/releaseバリア」が基であると書きましたが、実際に次期C++に導入される予定のatomic APIは、もう少し複雑な仕様になっています。一番の違いは、メモリバリアの種類が増えていることです。 次期C++標準の現在のドラフトでは、メモリバリアの種類を表すenum型の定義は以下のようになっています。 namespace std { typedef enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, m

    次期C++に導入されるメモリバリアについて解説してみる - yamasaのネタ帳
  • オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine

    C++で並列アプリケーションを実装するためのテンプレートライブラリとして、インテルがリリースしている「Intel Threading Building Blocks」(TBB)がある。TBBはインテル コンパイラーやインテル Parallel Studioといったインテルのコンパイラ製品に付属しているほか、オープンソース版も公開されている。記事ではこのTBBの概要と、基的な使い方を解説する。 C/C++で並列アプリケーションを実装する手法として、並列化したい処理をOSのAPIを用いてマルチスレッド化する、もしくは並列プログラミングの規格である「OpenMP」を利用する、といったものが知られている。これらについては以前の記事でも紹介しているが、マルチスレッドを利用した実装は柔軟性がある一方で手間が掛かり、OpenMPは比較的手軽だが柔軟性に欠けるなど、それぞれに長所と短所がある。 また、

    オープンソース化された並列化テンプレートクラスライブラリ「Intel Threading Building Blocks」入門 | OSDN Magazine
  • d.y.d.

    20:52 09/07/30 こんすとぽ 確か cppll でかなり昔に見た記憶があるんですが、C++ のこれ int I = 42; const int CI = I; // OK! int* pI = &I; const int* pCI = pI; // OK! int** ppI = &pI; const int** ppCI = ppI; // コンパイルエラー! int** から const int** への変換はできません! は何故こういう仕様になっているのでしょうか?というのは面白いクイズだなーと。 「2番目が安全なのと同じで、3番目も型的には安全では?」と一瞬思ってしまうのですが、 そんなことはなく、このキャストを許すと const なはずのものを書き換えられてしまいます。 具体的にどうやるかは読者の皆様への宿題です(←偉そう)。 知った当時はよく仕様考えてあるなーすげー

    tanakaBox
    tanakaBox 2009/08/31
    constに関する話題。
  • C++マニアック,よくわかるC++言語プログラミング講座

    What's new 2008/06/30 Google 検索窓をつけてみました。 2008/06/14 身長や体重など複数の基準でソートする例 を追記。 2008/06/14 英文字文書を読んで、文字数の頻度順にソートする例 を追記。 古い What's new 当サイトで提示するサンプルコードは、あまりにも単純明快で、一見つまらないぐらいに見えるはずです。しかし、もしあなたがそう感じたのであれば、それは、ねらいどおりで、大成功と言えます。ちょっと難解と思われている C++ が、つまらなく見えるほど平易に解説されているということですから。 基礎(入門)編 その他(非 C++ 的) エッセー C++ はアセンブリ言語のように軽快であるにもかかわらず、仮想クラスやクラスの継承、オペレータのオーバーロード、そして、テンプレートと、高級言語のプログラミングテクニックを余すところなく駆使で

    tanakaBox
    tanakaBox 2008/06/04
    基本だけど、マニアックらしい。
  • Boost Libraries

    アルファベット順ライブラリリスト カテゴリ別ライブラリリスト 文字列とテキスト処理 コンテナ イテレータ アルゴリズム 関数オブジェクトとより高位のプログラミング ジェネリックプログラミング テンプレートメタプログラミング プリプロセッサメタプログラミング 並列プログラミング 数学と計算 正当性とテスト データ構造 入出力 言語間サポート メモリ 構文解析 その他 不完全なコンパイラの回避手段 どのライブラリがどのコンパイラで動くかを理解するには Compiler Status. ライブラリのダウンロード,ビルド,インストールについてはGetting Started. アルファベット順ライブラリリスト any - 異なる型のひとつの値を格納できる、安全で汎用的な入れ物。Kevlin Henney 作 array - STL に準拠した定数サイズの配列のラッパコンテナ。Nicolai Jos

    tanakaBox
    tanakaBox 2008/06/02
    和訳。
  • The C++ Source

    In this article, Scott Meyers describes a technique that enables the specification of arbitrary combinations of user-defined code features on a per-function basis and that detects violations of feature constraints during compilation.

    tanakaBox
    tanakaBox 2008/05/26
    C++のtips
  • ロベールのC++教室

    tanakaBox
    tanakaBox 2008/03/22
    web版。