タグ

c++に関するkarupaneruraのブックマーク (8)

  • メモリの二重解放回避テク - akihiko’s tech note

    メモリの二重解放とは, new などで確保したメモリ領域(ヒープ領域)を2回 delete などで解放することを言う. new と delete をきちんと対応させて書いていないときに起こる問題だ.特にクラスのメンバに動的確保したメモリへのポインタを含む場合にやってしまいがちである.ここでは二重解放によって発生する問題を解説する. 結論から言うと,メモリを解放した後 (delete p1;),ほかの用途でメモリを確保し (p2=new T;),たまたまそれが解放したメモリと同じアドレスに割り当てられてしまった場合 (p1==p2),最初のメモリを二重解放すると (delete p1;),新しく確保したメモリ (p2) が解放されてしまう.この結果,新しく確保したメモリにアクセスすると値が書き換えられていたり,セグメンテーションフォルトが発生する場合がある.プログラマはまず,新しく確保したメ

    メモリの二重解放回避テク - akihiko’s tech note
  • C++17の標準ライブラリ

    発表者:江添亮 言語:C++ 仕事:ドワンゴ 趣味:ボルダリング、factorio C++17 2017年に発行される予定の標準規格 変更点 多数のマイナーな問題の修正 コア言語の新機能は少ない 新しいライブラリが多い C++17の標準ライブラリの紹介 正式な規格はまだ変わる可能性がある 文字列検索 みんな文字列検索してますか? boyer moore search Robert S. BoyerとJ Strother Mooreが1977に発表した 高速な文字列検索アルゴリズム みんな知ってるよね? 知らない方に朗報 Donald Knuth著 The Art of Computer Programming Vol.4A アスキードワンゴから今秋発売予定 コード例 auto pattern = "..."s ; auto text = "..."s ; auto bm_search =

  • Big Sky :: MSVC の怖い話

    夏だし、怖い話しようぜ! #include <cstdio> #include <math.h> class C { public: C() {} C(double) { printf("hello world\n"); } }; int main(int argc, char** argv) { C(NAN); return 0; } 僕は今日... こんなコードをコンパイルしたんだ...。gcc でコンパイルして実行したんだ...。 hello world 期待通りだった。 僕は安心し、これを今度は MSVC でビルドしたんだ...。 実行すると... 何も出ない... 僕は怖くなった。 何なんだ!何なんだ!NaN なんだーーー! 僕の C++ 人生はなんだったのか...。僕は病に侵されているに違いない...。 怖いながらもデバッガで追ったんだ... そしてステップインした... えっ

    Big Sky :: MSVC の怖い話
    karupanerura
    karupanerura 2014/07/01
    NaNということだ…
  • 新たなC++世代

    先日のドワンゴC++勉強会で、筆者は若いC++世代と話をする機会を得た。若いとはいえ、筆者よりせいぜい5,6年歳が離れているだけで、C++を学び始めた歳も、筆者より5,6年遅かったので、都合10年ほど、筆者より後にC++を学び始めたというだけの話だ。しかし、C++にとって、いやプログラミング全般にとって、10年はあまりにも長過ぎる。 筆者がC++を書物で学び始めた頃、まだテンプレートはまともに実装されていなかった。筆者がコンピューターを所有し、C++を実際にコンパイル出来るようになった時、ようやく主要なコンパイラーがC++を実装し始めていた。当時最新のテンプレート事情を解説した、C++ TemplatesやC++ Template Metaprogrammingを、筆者は読んでいた。C++ Templatesは、10年後の2013年に日語に翻訳された。当時最新だった内容は、今となっては歴

  • VSTホストを作ろう! - hwm's blog

    VSTホストを作ろう! @hotwatermorningです。 この記事は、C++ Advent Calendar 2013の5日目の参加記事です。 はじめに 今回は、VSTiという種類のプラグインを読み込んで音を鳴らす、「VSTホスト」の作り方について紹介します。 VSTホストの画面を作るにあたり、「balor」というC++Windows GUIライブラリを使用しました。balorについてはリンク先をご参照ください。 この記事の内容について、筆者がVST規格について勘違いしている点があるかもしれません。 ご了承ください。 VSTとは VSTとは簡単に言うと音楽製作ソフトのプラグイン周りの規格です。Wikipediaでは、以下のように解説されています。 Steinberg's Virtual Studio Technology(一般的にはVST)とは、ソフトウェア・シンセサイザーやエフェ

    VSTホストを作ろう! - hwm's blog
  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • IRC Protocol Parser を書いた - tokuhirom's blog

    http://tokuhirom.github.com/nanoircparser/ C++ で 1ファイルでうごく IRC の protocol parser を書いたので github にアップしておきました。 IRC のクライアントライブラリは、イベントのハンドリングが主で、ライブラリになっていなくても手でくみたてればわりと十分だったりするので、面倒な protocol parser の部分だけさくっとかいてみました。 ベンチマークはとっていませんが、速度はそれなりにでてるんじゃないかとおもいます。client side で気軽にうごかすボット、みたいなシーンを想定しているので、わりと富豪的な実装になっていますけれど。 今回、工夫した点としては re2c を利用してパーズしてます。このおかげで非常に見通しがいいコードになってます。RFC にのっている BNF のほとんどそのままなので

  • 1