タグ

C++に関するmitsuki_engawaのブックマーク (20)

  • C/C++に文字エンコーディングバリデーション機能がないって、ほんと? - kazuhoのメモ置き場

    通りすがり (2009-09-16 18:09) > PHP以外の言語は「(略)」のに対し ここに挙げられている言語がWebアプリで使われる全ての言語ではない。 例えば、CやC++にはない。付け足せば、PHPPerlなどのCモジュール内部で起こった不正な文字はスルーされうる。 よって、「PerlJava、.NETRubyPHPの中では」と書けば筋は通るが、「PHP以外では」は誤り。 そしてそんなことを、PHPの(脆弱性撲滅に注力している)開発者に言ったら、喧嘩を売られたと受け止められて当然。 PHP以外では: 既にあたり前になりつつある文字エンコーディングバリデーション - 徳丸浩の日記(2009-09-14) というコメントが気になった。 C言語にある文字コード変換機能って言ったら mbtowc だと思うけど、mbtowc は無効なバイト列を受け取ると EILSEQ を返すことに

    C/C++に文字エンコーディングバリデーション機能がないって、ほんと? - kazuhoのメモ置き場
  • VisualStudio 2010 beta lambda 式 | ホイール欲しい ハンドル欲しい

    VisualC++ 2010 beta ではラムダ式が使えます。 無名の関数を inline で宣言することが可能で、関数オブジェクトのように 取り扱いできます。 ・Download Visual Studio 2010 Beta ・Examples of Lambda Expressions 変数で受け取る場合は auto や template を使った汎用の入れ物が必要です。 auto f0= []( int x, int y ){ return x * y; }; std::tr1::function f1= f0; lambda 式は無名の型宣言に相当するので、同等の型を明示的に宣言することが できません。 名前をつけるだけなら下記の定義は出来ますが、これも f0 が有効な範囲のみです。 typedef decltype(f0) lambda_type2; lambda_type2

  • 参照とポインタの違い - 2008-12-11 - mad日記

    科学者とあたまを書いたひとだけれども、この名前どっかで聞いた事があるなと思ったら, 昨日劇団青年座の人の講演で聞いたのだった。 「フユヒコ」という劇団青年座の公演が明日NHKで放送されるらしいです。冬彦ってのは寺田寅彦のペンネームらしい。 http://cgi4.nhk.or.jp/hensei/program/p.cgi?area=001&date=2008-12-12&ch=31&eid=9950 おもしろそうだから観てみようかな。 ところで小柴先生が同じような事を言っていたのを思い出した。このインタビューは面白い。 一流の理論家は、「自分の理論では、ここまでは使えるけれど、これから先は分からない」という適用限界をいつも意識している。ところが二流の理論家というのは、自分が名前を覚えた、あるいは、使った理論で何でもやれると思ってしまう。二流の理論家に困らされるのは、新しい実験計画が出てき

    参照とポインタの違い - 2008-12-11 - mad日記
  • Kazuho@Cybozu Labs: C++ テンプレートを使って MBCS と Unicode ちゃんぽんなコードを書く話

  • Intel C /Fortran Compiler for Linux 10.0登場 | エンタープライズ | マイコミジャーナル

    Intelは25日(米国時間)、「Intel C++ Compiler for Linux 10.0」および「Intel Fortran Compiler For Linux 10.0」を公開した。Intel C++ CompilerはC/C++コンパイラとデバッガを含んだ開発ツール。Intel 32ビット/64ビットプロセッサにおいて高い性能を発揮することを目的としている。同コンパイルを使うとHyper-Threadingテクノロジの機能を活用できるほか、スレッドアプリケーションのサポート、最適な技術の提供などが実現されている。GCC 3.x/4.xおよびG++と互換性があるため、既存の開発環境と統合しやすいという特徴もある。 Intel C++ Compiler for Linux 10.0では、パフォーマンスの改善、マルチコアへの対応強化、スレッド処理の改善、セキュリティチェック機能

  • 鍋あり谷あり - 左辺値に条件演算

    先日書いた (a<b?a:b)=0 の類。 rubyでもjavascriptでも文法エラーだった。 rubyについてはまあそうかなと思ったんだが、javascriptで通らないのはちょっと意外であった。 よく考えると、あるいはよく考えなくても、なんとなく不自然な式である。 条件式の結果を左辺に書ける言語って、C/C++以外にあるのだろうか。 当然BCPLが有望なわけだが、処理系がない。 朝電車の中で、w-zero3[es]でちろっと書いた記事が、リンク元の記録を見る限り500以上のアクセスを集めてちょっとびっくりした。ブックマークやトラックバックもついてるし*1。 で。 ちょっと解説じみたことを。 (a<b?a:b)=0 だと妖しげだが、 int & smaller( int & a, int & b ) { if (a<b){ return a; } else { return b; }

    鍋あり谷あり - 左辺値に条件演算
  • switch と初期化 - odz buffer

    ref:c⌒っ_д_)っ←のや - 敗北 まぁ、なんというか大雑把ですね、説明が。デストラクタがない、int や double でも同様だったりする罠。 とりあえず、問題は初期化を飛び越えること、ということを以前きむら(K)さんが書いていたので、ポインタだけ。(←手抜き) ref:ときどきの雑記帖 リターンズ 2007年1月

    switch と初期化 - odz buffer
    mitsuki_engawa
    mitsuki_engawa 2007/03/28
    初期化・宣言類をgotoで飛ばしてはいけないらしい。
  • memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話

    Cのソースコードに m = 195; とか n = 0xffffffff; とか書いたときの定数(右辺)の型って、なんであるかご存じでしょうか? また、C90(1990年版のISO C言語規格)とC99(1999年版のそれ)ではその型が微妙に異なったりすることがあるんですが、ご存じでしょうか? さらには、お使いのマシンがILP32であるかLP64であるかLLP64であるかによっても、微妙に型が違ってきたりするんですが、それについてはどうでしょうか? えーもちろん、普段は「Uがついてなかったらint, Uがついてたらunsigned intジャネーノ?」くらいの理解でも殆ど不自由しないわけですが、詳細な理解がないとハマるケースも稀にあります。 私はというと、上に書いたような事は、C90/99の差違を除いてはだいたい理解しているつもりだったのですが、C90/99の差異について無頓着だったがため

    memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話
    mitsuki_engawa
    mitsuki_engawa 2007/02/04
    げろげろ
  • Xbyak - x86 JIT assembler -

    Xbyak - x86, x64 JIT assembler - .frame(English) .frame(x86の究極の最適化手法?) Xbyak(カイビャック)はx86(IA32), x64(AMD64, x86-64)のマシン語命令を生成するC++のクラスライブラリです. プログラム実行時に動的にアセンブルすることが可能なため, 柔軟な最適化(動的コード生成)が可能となります(利用シーン:量子化の高速化, 式の計算). 暗号ライブラリに使って高速な実装をしてみた(very fast etaT pairing for Core 2 Duo) ヘッダファイルオンリー xbyak.hをインクルードするだけですぐ利用することができます(32bit, 64bit両対応). Windows Xp(32bit, 64bit), Vista/Linux(32bit, 64bit)/Intel

  • いやなブログ - RAII と setjmp/longjmp

    RAII と setjmp/longjmp C++ には RAII (Resource Acquisition Is Initialization) というイディオムがあります。これはリソースの開放を確実に行うためのテクニックとして C++ のプログラムで広く用いられています。しかし、RAII も setjmp/longjmp という落とし穴があります。 RAIIの基 次のプログラムはメモリリークを起こします。 #include <string> using namespace std; int main() { string *p = new string; return 0; } このプログラムをビルドして valgrind でテストすると次のようなエラーメッセージが表示されます。4バイトのメモリリークが検出されました。 % g++ test.cc % valgrind ./a.ou

    mitsuki_engawa
    mitsuki_engawa 2007/01/06
    まぜるなきけん
  • C++で読むデザインパターン(Design Patterns read by C++)

  • 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
  • log.utashiro.com: 『C/C++ セキュアコーディング』発売です

    JPCERT/CC の連中と翻訳していた『C/C++セキュアコーディング』が Amazon で予約可能になってます (なんと1896位だっ!)。出版予定は 11/6。協力して頂いた方々、ありがとうございました。Cのプログラマはもちろんなんですが、基的な仕組みがきっちり解説してあるので、案外コンピュータアーキテクチャの勉強にもなると思いますよ。普通の教科書で勉強するよか面白いかも。 また、このの著者である Robert C. Seacode (すごい名前でしょ :-) さんを呼んで行うセミナーの受け付けも始まってます。26日まで早期割引受付中。 http://www.jpcert.or.jp/seminar.html 目次はこんな感じです。 ↓ 序文 書について 前書き 想定している読者 構成と内容 謝辞 著者について 第1章 今そこにある危機 1.1 現状認識 1.1.1 被害規模

  • C++/CLI、ISOに蹴られる

    目次 ホーム 連絡をする RSS Login Blog 利用状況 投稿数 - 1078 記事 - 2 コメント - 26225 トラックバック - 363 ニュース 著作とお薦めの品々は 著作とお薦めの品々は 東方熱帯林へ。 わんくま 東京勉強会#2 C++/CLI カクテル・レシピ 東京勉強会#3 template vs. generics 大阪勉強会#6 C++むかしばなし 東京勉強会#7 C++むかしばなし 東京勉強会#8 STL/CLRによるGeneric Programming TechEd 2007 @YOKOHAMA C++C++/CLI・C# 適材適所 東京勉強会#14 Making of BOF 東京勉強会#15 状態遷移 名古屋勉強会#2 WinUnit - お気楽お手軽UnitTest CodeZine Cで実現する「ぷちオブジェクト指向」 CUnitによるテスト駆

  • インテル、マルチコア対応ソフト開発を支援するツール群を発表へ

    大手チップメーカーのIntelは米国時間8月28日に、複数のソフトウェア開発ツールをリリースすると見られている。これらのツールの目的は、マルチコアプロセッサで既存のアプリケーションを実行する際に、大幅なパフォーマンス向上を実現することだ。 Intelは、2006年末までに自社製チップの約70%がマルチコアになると予想している。マルチコア設計では、個々のプロセッサが2つ以上のプロセッシングユニットを搭載することにより、電力消費を増やさずにパフォーマンスを向上させることが期待できる。 新しいツール群の設計意図は、ソフトウェア企業のプログラマーを支援し、マルチコアシステムから付加的なコンピューティングパワーを引き出して活用できるようにすることだ。 Intelの開発者向け製品部門のマーケティング担当ディレクター、James Reinders氏によると、新ツールの「Threading Buildin

    インテル、マルチコア対応ソフト開発を支援するツール群を発表へ
    mitsuki_engawa
    mitsuki_engawa 2006/08/29
    並列化C++?
  • プログラミング・開発者・ソースコード CodeZine:C++におけるデータのソート方法の比較(C++, STL, ソート)

    はじめに この記事の目的は、「C++のSTLにはデータをソートする方法がいくつか存在するが、ソート処理を簡単に、かつ効率のよいコードはどれか…」を調べることです。 ここでは、自前のソートアルゴリズムを作って速度を比較したり、既存のソートアルゴリズムを最適化するといったことは目的としません。公開されているSTLをありのままの姿で計測します。コードの保守性や移植性、可読性を考慮して「いたって普通」な書き方が一番メリットが受けられると考えていますし、より多くの人に恩恵をもたらすと考えるからです。 自前のソートアルゴリズムの構築や、既存のアルゴリズムの最適化は、可読性や移植性を悪くするため、得られるメリット(高速処理による時間)よりもデメリットが大きいと考えているのです。よって、ここで検証するコードは「いたって普通」な書き方であり、可読性を重視した書き方になります。 自前でソートアルゴリズムの構築

  • reflection.cc - 兼雑記

    http://shinh.skr.jp/koneta/reflection_cpp.tar.gz 以下のように、 Test クラス内の test ではじまっているメソッドをイテレートして呼び出せます。 #include "reflection.h" #include <iostream> #include <cstring> using namespace std; class Test { void test_func1(); void test_func2(); void ignore(); }; void Test::test_func1() { cout << "func1" << endl; } void Test::test_func2() { cout << "func2" << endl; } void Test::ignore() { cout << "error" <<

    reflection.cc - 兼雑記
    mitsuki_engawa
    mitsuki_engawa 2005/11/17
    メソッドを名前で列挙する。
  • Be Newsletter, Issue 79

    Be Newsletter Issue 79, June 25, 1997より BE ENGINEERING INSIGHTS: 壊れやすいベース・クラス(FBC)問題とは、何ですか? By Peter Potrebic 我々はBeOSの実装を分離したり、隠したりしようと努力していますが、それでも開発者が我々のダイナミックロード・ライブラリに対してコンパイルし、リンクする時点である種の依存関係が生成されます。 これらの依存は、以下を含みます: オブジェクト(すなわち構造体やクラス)のサイズ (publicやprotectedである)「可視の」データまでのオフセット vtableの存在とサイズ vtable中の仮想関数へのオフセット あなたのアプリがコンパイルされ、リンクされる時、それ[ダイナミックロード・ライブラリ]はこれらすべての情報を記録します。 これらのうちの何かがライブラリ中で変更

    mitsuki_engawa
    mitsuki_engawa 2005/10/31
    クラスを共有コンポーネントに適用する場合の注意点、あるいは問題点。
  • リンクと同名シンボル: weak シンボル編 - bkブログ

    リンクと同名シンボル: weak シンボル編 先日の記事では静的リンクの際に同名シンボルの衝突は検出されると書きました。しかし、 weak シンボルが存在すると話は変わります。 次のようなプログラム main.cpp があります。 #include <iostream> class Foo { public: Foo(int x) : x_(x) {} void func() { std::cout << x_ << std::endl; } private: int x_; }; int main () { Foo foo(256); foo.func(); return 0; } このプログラムをコンパイルして実行すると 256 と表示されます。 % g++ -c main.cpp % g++ -o main main.o % ./main 256 ここで、main.cpp とはまった

    mitsuki_engawa
    mitsuki_engawa 2005/10/12
    リンクと同名のシンボル(まとめ)
  • C の qsort と STL の sort の速度比較 - bkブログ

    STL は知れば知るほどよくできていると感心します。Effective STL の46項には今回と同様の実験が取り上げられています。 Effective STL には他にも、イテレータの無効化やコンテナ操作の性能など、 STL を使う上で注意すべき点が詳しく解説されています。 実験に使ったプログラムは以下の通りです。 $((2**24)) はコマンドラインで 2の24乗を計算する表記です。bash や zsh で使えます。 実行結果 % g++ -O2 -o sort sort.cpp % ./sort $((2**24)) qsort: 9.22 stl-sort-func: 5.62 stl-sort-functor: 2.56 % icc -O2 -o icc-sort sort.cpp % ./icc-sort $((2**24)) qsort: 8.82 stl-sort-fun

  • 1