タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとcとc++に関するhiromarkのブックマーク (8)

  • C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記

    ここ数日、Google NaClを使ってC++コードをweb上で実行できるようにするということを試していました(できたのはこれです)。使ってみた感想としては、この仕組みがwebサービスとして使われるようになるかは分かりませんが、C/C++コードで書かれたアプリケーションを実行できる状態で見せるといった用途では、現段階でも十分に使えるんじゃないかというものでした。 Google NaClを使うと、C/C++コードをweb上で動かすことができます。ちょうど、ruby, pythonなどのC APIを使った拡張モジュールのようなことがブラウザ上で動くJavaScriptでもできるようになったようなものだと思ってください。(ただし、NaClプラグインが動くのは現在のところGoogle Chromeだけです) というのも、C/C++で書かれたプログラムを実行しようと思ったら、まず自分以外の環境でもビ

    C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記
  • メモリリークしない安全なプログラムの書き方

    とりあえず動くプログラムを書く ここでは例として、Fooという構造体の2次元配列を、引数で指定された幅と高さで作る、createFooMatrixという関数を作ってみます。 なお、配列の各要素を、initializeFoo関数で初期化しています。 Foo **createFooMatrix ( int width, int height ) { Foo **ptr = NULL; int w, h; ptr = (Foo **)malloc(height * sizeof(Foo *)); for (h = 0 ; h < height ; h++) { ptr[h] = (Foo *)malloc(width * sizeof(Foo)); for (w = 0 ; w < width ; w++) { initializeFoo(&ptr[h][w]); } } return ptr;

    hiromark
    hiromark 2009/03/03
    よくまとまってる。
  • コールバック - Mona OS developers Wiki

    経緯 † Monaでスレッドに引数を渡せるようになりましたが、SUNEO/007.まだ投げないでEDS1275さんより、ラッパーを挟まずにC++と絡めることができるかどうかという問題提起がありました。 結論から言うと、コールバック関数の呼び出し規約が、 cdeclであれば可能。 fastcallでは不可能。 ↑ メンバ関数の正体 † 次のようなソースを用意します。(test1.cpp) class Test { public: void test(); }; void Test::test() {} void call() { Test t; t.test(); } Intel形式でアセンブリを出力します。 $ g++ -masm=intel -S test1.cpp 出力されたtest1.sより、call()中のt.test();を抜き出してみます。 lea eax, [ebp-1] m

    hiromark
    hiromark 2006/10/24
    ほー、これは便利なページ。
  • checkstack.pl で関数のスタック消費量を調べる - bkブログ

    checkstack.pl で関数のスタック消費量を調べる Linux カーネルのソースコードに付属する checkstack.pl を使うと、C/C++ のプログラムの関数のスタック消費量を調べることができます。checkstack.pl は objdump -d のディスアセンブルの出力からスタックポインタの操作をパターンマッチしてスタックの消費量を計算しています。 入手方法 checkstack.pl は Linux カーネルのソースコードに付属しています。Debian GNU/Linux sarege なら次のようにコマンドラインから実行して取得できます。ソースツリーに含まれる scripts/checkstack.pl が目的のものです。 % apt-get source kernel-source-2.6.8 使い方 checkstack.pl の使い方は簡単です。スタックサイ

    hiromark
    hiromark 2006/04/24
    こんな便利なツールが?知らなかった。
  • 配列へのポインタと配列へのリファレンス - bkブログ

    配列へのポインタと配列へのリファレンス C/C++ のあまり使われない機能に、配列へのポインタと配列へのリファレンスがあります。ここでは、それらがどのようなものかまとめたいと思います。 C 言語には配列の先頭要素へのポインタとは別に配列へのポインタ が存在します。。プログラミング言語Cの 5.7 に多次元配列を受け取る関数の例が載っています。 次のプログラムではサイズ 256 の char 型の配列を作り、その配列へのポインタ p を作っています。++p を実行すると p の指すアドレスは 256 バイト分進みます。 #include <stdio.h> int main() { char foo[256]; char (*p)[sizeof(foo)] = &foo; printf("%p\n", p); ++p; printf("%p\n", p); // 256 バイト分進む ret

    hiromark
    hiromark 2005/12/19
    とりあえずおもしろいので法則にハマっておこう (笑)
  • main() の前に関数を呼ぶ - bkブログ

    main() の前に関数を呼ぶ C/C++ のプログラムで、main() の前に関数を暗黙的に呼びたいときがあります。ここでは GCC の拡張を使った方法と、C++ のコンストラクタを使った方法を紹介したいと思います。 GCC では main() の前に呼ばれる関数を __attribute__((constructor)) という拡張機能を使って定義できます。たとえば、次のプログラムでは main() の前に foo() が呼び出されます。 #include <stdio.h> __attribute__((constructor)) void foo() { printf("hello, before main\n"); } int main (int argc, char **argv) { printf("hello, world\n"); return 0; } 実行結果は以下の

    hiromark
    hiromark 2005/12/18
    こんな方法があるんですね。「まとめ」のとこに書かれている方法はたまに使う。
  • 普通のやつらの下を行け: BFDでデバッグ情報の取得 - bkブログ

    普通のやつらの下を行け: BFDでデバッグ情報の取得 gcc に -g オプションを与えるとデバッグ情報をバイナリに埋め込むことができます。この情報は通常 gdb などのデバッガによって利用されますが、普通のプログラムでも利用できれば何かおもしろいことができるかもしれません。 普通のやつらの下を行けの第4回として、今回は BFD (libbfd) を用いてデバッグ情報を取得する方法を取り上げたいと思います。 BFD とは BFD (Binary File Descriptor library) は各種バイナリフォーマットに対して低レベルな操作を行うためのライブラリです。 GNU binutils に含まれています。Debian GNU/Linux なら次のコマンドでインストールできます。 % sudo apt-get install binutils-dev ここでは BFD の bfd_

    hiromark
    hiromark 2005/11/07
    BFD (libbfd) を用いてデバッグ情報を取得する方法。
  • OBB vs AABB - Radium Software Development

    This domain may be for sale!

    hiromark
    hiromark 2005/02/25
    「最初はどんなに優れていたアイデアも,多数の人がそれに群がるうちに本質がぼやかされ」確かに
  • 1