タグ

cに関するjimo1001のブックマーク (10)

  • 革命の日々! __attribute__(alloc_size) を使わないと_FORTIFY_SOURCE を活かせないよ。という話

    _FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),

  • Kazuho@Cybozu Labs: Picoev: a tiny event loop for network applications, faster than libevent or libev

    I am sure many programmers writing network applications have their own abstracting layers hiding the differences between various I/O multiplex APIs, like select(2), poll(2), epoll(2), ... And of course, I am one among them.  While writing mycached (see Mycached: memcached protocol support for MySQL for more information), I was at first considering of using libev for multiplexing socket I/Os.  Libe

  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記

    正月は TAILQ のソースを読んでいた。普段 C を読み書きしないので、とても勉強になった。ポインタの使い方がわかった(ような気持ちになれた)。 TAILQって? TAILQ は C のマクロで書かれた双方向リンクリストの実装。 連結リスト - Wikipedia BSD、OSX や glibc に含まれている。 http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/sys/queue.h.html http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=misc/sys/queue.h;hb=HEAD 基的な使い方は以下のページが参考になった。 Tail queue(TAILQ) C言語系/「デーモン君のソース探検」読書メモ/14, man.conf - Glamenv-S

    TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記
  • Programming in C

    Programming in C UNIX System Calls and Subroutines using C. A. D. Marshall 1994-2005 Substantially Updated March 1999 Next: Copyright Search for Keywords in C Notes Keyword Searcher Download Postscript Version of Notes Click Here to Download Course Notes. Local Students Only. Algorithm Animations Direct link to Java Algorithm Animations (C related) C COURSEWARE Lecture notes + integrated exercises

  • 使用しない仮引数 - 職業としてのプログラミング

    多くを知るものは少なく語る Who knows most says least. 仮想関数やテンプレート関数等、同じシンタックスで複数の使われ方をするような関数では、使用しない仮引数というものが登場することがあります。例えば、 class ClassBase { virtual func(int hint); }; class ClassA : pulic ClassBase { virtual func(int hint); }; void ClassA::func(int hint) { // このClassのfuncでは仮引数hintは不要なので使用しない ... } 仮想関数やテンプレート以外でも、関数仕様として拡張性を持たせるために用意されているものの、現状では使用しない場合等も考えられるでしょう。 さて、このような使用しない仮引数が使用しないだけで、動作上問題はないのですが、コ

    jimo1001
    jimo1001 2012/01/23
    voidキャストよさげ
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

  • libevent はこんなに便利 - mtaneda’s blog

    会社の受信メールサーバは IMAP4 と POP3、両方用意はされておりますが、 SMTP の認証には未だ POP Before SMTP が使われています。 これにはちょっと古めの PDA などでは SMTP 認証が使えないという理由もありますが、 実際は、サーバ類がすべて自作のアプリケーションゲートウェイを通して外部に公開されていて、SMTP のモジュールが認証に対応していないことが原因です・・・ でも、やはり IMAP 4 を使いたいということで、 IMAP Before SMTP に対応したゲートウェイをだいぶまえに作ったのですが、 どうも動きが不安定で社内から避難の声が多々聞こえてきていました。 社長なんかメールを書くときは telnet で pop3 サーバと会話して認証しているくらいで・・・ そこで以前 itojun さんに教えてもらった libevent を使って全面的に書

    libevent はこんなに便利 - mtaneda’s blog
  • c-eldoc.el で C 言語プログラミング革命 - mooz deceives you

    emacs は人生 先日, また Life Changing なものに出会ってしまいました. 最近, 毎週のようにこの言葉を使っていて僕はどれだけ人生を変えれば気が済むのかという話なのですが, 出会ってしまったのです. c-eldoc.el に. eldoc.el 皆さん, eldoc.el をご存知でしょうか. Emacs Lisp を少しでも書かれるという方なら絶対に使っておきたいパッケージの一つが, この eldoc.el です. カーソル付近の関数に対する引数のリストをエコーエリアへ表示してくれたり, カーソルの位置から対応する引数を割り出しハイライトしてくれたり, もうこれなしで elisp を書く気などおきません. さらには eldoc-extension というパッケージを入れることにより関数や変数のドキュメントを表示してくれる機能まで追加され, もう至れり尽くせりです. 詳

    c-eldoc.el で C 言語プログラミング革命 - mooz deceives you
  • Lisp500

    [up] | news license installation usage bugs features Is your program large and complex? Are you tired of Greenspunning? Now, in only 500 lines, here we have an informally-specified bug-ridden implementation of Common Lisp, ready to meet your needs. -- Christophe Rhodes Lisp500 is a 500-line implementation of an informally specified dialect of Lisp. It attempts to be not too bug-ridden. Unfortunate

  • 1