C++にはガーベジコレクタが言語的には存在しないので、動的に確保したオブジェクトのメモリの管理はプログラマが責任を持って管理しなければ、メモリリーク・リソースリークなどの問題を生じてしまいます。 今時のプログラマはこうした問題を引き起こすリスクを減らす為に、記述ミスの起こりやすい生のポインタを使い自力でnewとdeleteを記述する事を避けて、安全なスマートポインタ、即ちオブジェクトの寿命により自動的にメモリ解放を行う便利なポインタを利用するべきです。 しかし、スマートポインタと言っても種類が幾つかあり、落とし穴も存在するのでどういった状況でどれを利用するのが良いのかを考察してみます。 Dynamic memory managementを見てみても C++11から随分増えていますね http://en.cppreference.com/w/cpp/memory std::auto_ptr
JavaScript Advent Calendar 2011 (フレームワークコース) の25日目で、「導入編」の続きです。 emcc を使う 「導入編」で emmaken.py というツールを使うと間単に Emscripten を使えると書きましたが、「導入編」を書いた後で Emscripten がアップデートされ、emcc というツールが登場しました。例えば hello.c を変換する場合は、ターミナルから以下のように呼び出します。 $ emcc hello.c emmaken.py ではこの後に Emscripten 本体を呼び出す必要がありましたが、それが統合され1ステップで完結するようになりました。 emcc の導入により emmaken.py の使用は非推奨となりました。 Javascript プログラムと連携する Emscripten の使用シーンとしては、変換元のCプログ
Java全盛の時代ではありますが、C++によって開発をしなければならない/した方がよい案件はまだまだ数多く存在します。その一方で、Javaからこの業界に入ってくる人がますます増えてきているのもまた事実です。本連載では、これまでJavaでオブジェクト指向プログラミングを実践されてきた方が、ある日突然C++を使うことになったときのための学習ポイントを、筆者の実経験をもとにお送りしていきます。 目次 はじめに 開発環境の準備 Hello C++!! プログラムの入り口 メソッド と 関数 まとめ & 次回予告 1. はじめに 「Do you love Java?」 こう聞かれたら、読者の皆様はどう答えますか? 筆者は「Yes, I love Java : )」と、満面の笑みで答えます。 なぜなら、 Java は、 手続き型でプログラミングをしていた筆者に、 「オブジェクト指向の何たるか」を手取り
はじめに DTrace とは 皆さんは DTrace をご存知でしょうか? DTrace は Sun Microsystems のブライアン・キャントリル(Bryan Cantrill)氏によって開発された、汎用情報採取のフレームワークです。 キャントリル氏へのインタビューでも語られているように、カーネルの動作状況を調査/確認することは、これまで非常に困難な作業でした。 しかし、DTrace の登場により、実際に稼動中のシステムのカーネルからも、安全に(かつ低コストで)情報を採取できるようになりました。 また、DTraceによって解析が容易になったことで、これまで解決することができなかったSolarisカーネルの(潜在的だったものも含めた)実装上の問題も、多数改善することができたのだそうです。 カーネル開発に関わったことがある方ならもちろん、通常のアプリケーション開発であっても、次のような
このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 Robert Schmidt Microsoft Corporation 2000 年 5 月 18 日 長年 C++ 関連の Usenet ニュース グループを読んできた経験からすると、次の 4 つの型変換演算子の関係が、プログラマをたびたび混乱に陥れる要因になっています。 const_cast dynamic_cast reinterpret_cast static_cast 特に、多くの C++ プログラマにとって reinterpret_cast と static_cast の違いは微妙、というよりも判別不能です。今回のコラムから 2 回にわたって、これらの違いに光を当てるとともに、それぞれの形式の使
Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な
前置き 自分の C++ レベルに絶望したので「ロベールのC++入門講座」を読んで再入門していく過程を日記に書いていきます。 「おまえはそんなことも知らずにコードを書いていたのか!」「それは間違い!」など叱咤激励募集中です:-) 読んでみたら、たくさんの驚きがありました。 スルーせずに読んでもらえると1つくらい役に立つことを提供できるかもしれません。 例えば5章のデフォルト引数に関数を使える例とか。 ルール 前置きはともかくはじめましょう。13:48にスタバで始めました。 読んで行くうえでいくつかルールを決めます。 知らなかったことは正直に知らなかったと書き、自分が読んで分かる説明を書く。 知識が曖昧だった所も同様に明確な説明を書く。 悩んだ内容を書く。 理解が怪しい所は必ずコードを書く。 さあ1章から読んでみよう。 1章 まずは使い方(13:50) 各 OS 毎に C++ の開発ツールを紹
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く