タグ

C++とmemoryに関するtyruのブックマーク (8)

  • IntelliSenseのデータベースをRAMディスクに移動してみた - うなてっくろぐ

    ええVisualStudio愛用してますとも。 さて、コード補完等をしてくれるIntelliSenseですが、C++の場合はソースを解析したものをキャッシュすることで高速化を図っています。具体的に言うと.ncb(2008以前)とか.sdfとかipch(2010)とかそんな名前のファイル・フォルダです。 コード補完無しではろくにコード書けないので*1やむを得ないものの、100MB近いファイルがソリューションごとに生成されて、そのうえコードを変更する度に更新されるというのはちょっと気になるところです。ファイルをコピーするときに邪魔だしね。 で、どうせ頻繁に更新されるなら*2もうオンメモリでいいじゃないですか。 先日Dataram RAMDiskというソフトを導入して2GBほどRAMディスクとして使っています。ここに移動することにしました。 フォールバックってなんだ VisualStudioには

    IntelliSenseのデータベースをRAMディスクに移動してみた - うなてっくろぐ
  • shared_ptr & weak_ptr - くらいおらいと

    Web 上ではフォントが崩れます. (DL 専用) Web 上で見る方は http://bit.ly/7dyNmz をどうぞ. 2009/12/12 Boost.勉強会プレゼン資料. 発表時のままの版. プレゼン発表の録画は http://bit.ly/6yjSkz です.Read less

    shared_ptr & weak_ptr - くらいおらいと
  • boost.interprocessさん凄いです - krustf の雑記

    この記事は C++ Advent Calendar 2010 の参加記事です。詳細は以下。 C++ Advent Calendar jp 2010 : ATND 今日はクリスマスですし、みなさんお忙しいと思いますし、それに僕はあんまり変態的な事を書けませんので…。*1 そんな中であまりTwitter上であまり話が出てこない(気がする)boost.interprocessのほんの一機能について備忘録的にまとめてみました。 Memory Mapped Files? boost.interprocessは基的に共有メモリの強力なラッパライブラリなのですが、その機能としてMemory Mapped Filesというものがあります。これはファイルをメモリとほぼ同じ感覚で操作するための機能です。ファイルを開いてそれに仮想的なアドレスを与え、あたかもメモリ上にあるデータにアクセスしてるかのような、まさ

    boost.interprocessさん凄いです - krustf の雑記
  • shared_ptrまとめ - while( c++ );

    語ドキュメントshared_ptr、weak_ptr boost勉強会http://www.ustream.tv/recorded/2981654 Smart Pointer Programming Techniques 実装してみた shared_ptrの実装1 - while( c++ ); shared_ptrの実装2 - while( c++ ); shared_ptrの実装3 - while( c++ ); shared_ptrの実装4 - while( c++ ); boost::shared_ptrっぽく。 shared_ptrの実装5 - while( c++ ); shared_ptr< void >を可能にする。 shared_ptrの実装6 - while( c++ ); 適当なクラス図とか。 shared_ptrの実装7 - while( c++ ); dele

  • 今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳

    Smart Pointers というか主に shared_ptr ですが(scoped_ptr のこともたまには思い出してあげてね!)。 恐らくは散々ガイシュツなネタですが、まー「検索するのが面倒だ」って人の手助けになればいいかと思います。僕も検索するの面倒ですし。 というかこの記事書いてるときもロクに検索してないです。間違いとかあったらすみません。 疑問点とか有りましたら、自分で調べるか、あるいは僕に知らせてもらえると助かります。では、始めましょう。 [最終更新] 応用例にカスタムアロケータでの参照カウント管理を追加: 09/12/16 基的な使い道 まず基的なことについては、僕が説明するより、この動画を参照した方が速いでしょう: http://www.ustream.tv/recorded/2981654 それに対するついったーでの突っ込み: http://kiwofusi.sa

    今更ながらに Boost.SmartPointers を考える - 野良C++erの雑記帳
  • オレオレアロケータ - 神様なんて信じない僕らのために

    newとかmalloc()した領域をひっくるめて保持しておいて、リクエストに応じて区別無くfreeでブチ殺すとか、何か使い道ないかなあ(まだゆーか) 404 Not Found 釈迦に説法かもしれませんが、 ありますよ、オレオレアロケータ!!(ドラえもんの声で) と、newは引数を使ってオーバーロードできるのでクラスに対してnew operatorとdelete operatorを制御することで、 一気にメモリを確保して、一気に解放できます。 static void* operator new( std::size_t size, CAllocator& allocator ) { と宣言して、自前のアロケータを指定してやればOKでございます。 書き方によっては暗黙で使っても良いです。使う人はそれを知ってないと駄目ですが。 for文で回しているところは、こういう感じに一気にとるならnew

    オレオレアロケータ - 神様なんて信じない僕らのために
  • operator newとoperator deleteを書くときは規約を守ろう 8項 - higepon blog

    operator new を自分で作成するならば、いろいろ約束を守ろうという話。 自分もMonaでなんとなく new をユーザーランド向けに実装しているが以下のルールを一部守っていない気がする。 newのお約束 0byteの要求に対しても正規のポインタを返さなければならない(実装例では0byte要求は1byte要求として扱っている) エラー処理関数を呼ばなければならない std::bad_allocを投げないといけない Monaは例外をサポートしていないので今のところ無理p deleteのお約束 NULLポインタのdeleteを安全に行わせる。 つまりこれは よく見かけるコード if (somePointer != NULL) delete somePointer; は これでよい delete somePointer;ということになる。 追記: Monaのユーザランドで、newの0割り当

    operator newとoperator deleteを書くときは規約を守ろう 8項 - higepon blog
  • CとC++の動的メモリー管理(1)、malloc関数とnew演算子の違いを知る | EE Times Japan

    C言語とC++言語では、動的にメモリーを確保したり解放したりする手法は異なり、それぞれ長所と短所がある。もちろん、安全性を最重要視する組み込み機器では、動的に確保したメモリーを利用すべきでないという考え方には心から賛同する。リスクが利点を上回ってしまうからだ。しかし場合によっては、動的なメモリーを適切に管理することで改善できることも多いのではないかとも考えている。 C言語やC++言語に標準的に用意されているメモリー管理向け関数の動作が意図した通りでない場合は、メモリー管理関数を独自に開発するとよい。独自のメモリー管理関数の仕様と振る舞いは、できる限り標準関数と同じにすることが理想である。標準関数のメモリー管理方法と違ってしまう場合でも、関数の引数と返り値の数と型は、可能な限り標準関数にそろえるべきである。関数の仕様を同一にしておくことで、最初は標準のメモリー管理関数を使って開発し、必要に応

    tyru
    tyru 2009/09/04
  • 1