タグ

Cに関するyuyarinのブックマーク (6)

  • C(++)言語: valgrindの使い方

    ubuntu% uname -a Linux ubuntu 2.6.12-10-386 #1 Sat Mar 11 16:13:17 UTC 2006 i686 GNU/Linux ubuntu% valgrind --version valgrind-3.0.1 (0) 目次 Valgrindに含まれるツール Memcheck: メモリエラーを検出する(default) Cachegrind: キャッシュミスを検出する Massif: ヒーププロファイラを使う まとめ valgrindの使い方とエラーメッセージを整理してみた。「valgrind --leak-check=full command」というコマンドラインをよく用いる。これによりメモリ周りのバグを検出出来る。 --tool=cachegrindではプログラム実行時のキャッシュミス率を測定する事が出来る。cg_annotateを

  • noreturnの挙動 - mad日記

    参加できなかった午前中の会議のレポートが気になってたけど出た。終わっちゃった会議にケチつけるのは野暮だけれど,noreturnの話がなんかいろいろおかしい。「何の為のnoreturn?」という肝心な点がどっかいってる。 exit等にnoreturn属性を付けてほしい http://d.hatena.ne.jp/faith_and_brave/20081208 なぜ???? exit()は標準関数なんだから, 返らないのはコンパイラが知っていますよ。 規格でも"The function exit() never returns to its caller."ってなってるし。 exit()にnoreturn属性を付けてほしいという人はいったい「何の為に」付けてほしいのか? 「せめて関数が返る場合に未定義エラーというのはどうにかしてくれ」というコメントに修正することになった http://d.h

    noreturnの挙動 - mad日記
    yuyarin
    yuyarin 2008/12/12
  • noreturnの挙動(続) - mad日記

    id:MaD:20081209のコメント欄が長くなり過ぎたので新たに書きます。 稲葉さんからご指摘を受けましたけど、どうも最適化云々はおまけで命はどうも if(foo) { abort(); } else { return bar; } のようなコードでコンパイラに警告を出させないことのようです。 http://d.hatena.ne.jp/MaD/20081209#c1228920872 警告抑止で使われる事は知っていたのだけれど, おまけも命もあるのか?と思ってよく考えてみたら全くその通りだった。 非常に勉強になったので説明します。 まず上の様なコードのコントロールフローグラフは一番左の様になります。 return bar;はそこで関数を抜けるので次のエッジは除去しています。 このままだと右側のフローが値を返さないのでコンパイラが困ります。そこでfにnoreturn属性をつけると,

    noreturnの挙動(続) - mad日記
    yuyarin
    yuyarin 2008/12/12
  • 参照とポインタの違い - 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日記
    yuyarin
    yuyarin 2008/12/12
  • 「C」と「C++」の関係とは?:ITpro

    プログラミング言語の「C」と「C++」に関する説明として,正しい内容はどれでしょうか。 ●解答を送信いただくと,すぐに正解と詳しい解説をご覧いただけます。

    yuyarin
    yuyarin 2008/12/09
    えー
  • Cの構文解析(宣言構文) - mad日記

    C言語の構文解析では宣言構文もなかなか大変なので紹介。処理系を作る人の参考になれば。 変数を宣言・定義する場合, 普通に考えれば [型] [変数名]; [型] [変数名] = [初期値]; という構文を採用するのが自然だと思う。例えばJavaやD言語などの新しい言語では int[] x; の様な構文を採用している。 しかし,CやC++では[型]の部分が構文的に独立していない。例えば int x[10]; はもちろんけれども, int *x; も構文上は [int] + [*x];となっている。*1 従って,この構文を正しく読むと「int*型のxの宣言」ではなく「int型のポインタ注釈付きxの宣言」となる。 このx[10]や*xの部分を「宣言子」と言い, 他には関数の仮引数列が含まれる。 このような構文を取るため, C言語では異なる型の識別子を同一の宣言文で宣言することができる。 int x

    Cの構文解析(宣言構文) - mad日記
  • 1