タグ

cとprogrammingに関するcho45のブックマーク (3)

  • [ruby-list:44393] Re: typedef unsigned long VALUE; に関して

    Subject: [ruby-list:44393] Re: typedef unsigned long VALUE; に関して From: "U.Nakamura" <usa@ r g o e . > Date: Thu, 27 Dec 2007 03:36:32 +0900 References: 44392 In-reply-to: 44392 こんにちは、なかむら(う)です。 In message "[ruby-list:44392] typedef unsigned long VALUE; に関して" on Dec.27,2007 02:46:36, <cruby47 / yahoo.co.jp> wrote: | 何か、重要な理由がありVALUEはvoid型のポインタとしては | 定義されていないと思うのですが、自分で考えていてもなかなか | 思いつかないので、そこの所を教えて

  • 2005-12-13

    今日は、C言語の意外かもしれない仕様をいくつか。 配列の添え字のように見えるもの a[b] と書くと配列演算をしているような気分になるが、式の中に表れる a[b]は、(*( (a) + (b) ) ) の略記であり、ポインタの計算と何も変わるところがない*1。 というわけで: int a[] = {1,2,3,5,8}; int b[2][2]={{1,2},{5,9}}; a[3]=100; printf( "%d\n", 3[a] ); /* 3[a] は、*(3+a)なので、a[3] と同じ*/ b[1][0]=999; printf( "%d == %d\n", 1[b][0], 0[1[b]] ); /* どちらも b[1][0] と同じ */となる。 (foo()?a:b)[3] と書くよりも 3[foo()?a:b] と書いた方が短くなるので、ソースコードを1文字でも短くしよ

    2005-12-13
  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

  • 1