トップ «前の日記(Tue Feb 15 2005) 最新 次の日記(Thu Feb 17 2005)» 編集

よこいまさる日記



Wed Feb 16 2005 [長年日記]

13:35

今日の昼はうまやの汁定食。

Photo 0

ってことでデジカメ発注しました。

 ってことで Dimage X31 を発注しました。 明後日ぐらいに荷物が着くのでしょうか。 清水さんに Dimage ってどんな具合か聞いてみたところ、写真の縁のほうが歪んだりしているぐらいで、あとは悪くないみたい、な感想だったので、Dimage を購入することに。 毎日まいにち昼ごはんの写真を撮っているボクに、料理とライティング っていうページを教えてもらったり。

家のキーボード交換しているときに

HHK Lite 2 に交換 Kinesis が本番投入されたので、そのかわりに職場から持ち帰ってきた Happy Hacking Keyboard Lite 2 を接続して写真をパチりととったのです。

綿棒が… が、しかし、テーブルの上においてあった綿棒のケースが落下して着陸失敗してこのアリサマに。 orz

ポインタの increment にハマった日

 int型のポインタを1つ加算・減算すると、IA-32 では int が 4byte (32bit) なので 4byte分 加算・減算される。 void型やchar型の場合は 1バイト (8bit) 分 加算・減算される。 っていうことをすっかり忘れて int 型へのポインタ変数で次の配列を取得するときに ptr += num * sizeof(int); とかしてしまって、実際は配列の3つ先をさすポインタになってしまって、配列長の4分の1を過ぎたあたりから Segv ったりしだして。 それに気づくのに少し時間がかかったり。 同様なのですが、IA-32 では long型へのポインタの場合は 4byte (32bit)、long long 型へのポインタは 8byte (64bit) になります。

以下、確認したときの手順:

$ uname -srm
Linux 2.4.26-co-0.6.1 i686

$ cat ptr++.c #include <stdio.h>
int main (int argc, char** argv) { int a, *p_int; void *p_void; char *p_char; p_int = &a; p_void = (void*)&a; p_char = (char*)&a; printf("sizeof(int)=%d, sizeof(void)=%d, sizeof(char)=%d\n", sizeof(int), sizeof(void), sizeof(char)); p_int++; p_void++; p_char++; printf("%p -> p_int=%p, p_voi=%p, p_char=%p\n", &a, p_int, p_void, p_char); return 0; } $ gcc ptr++.c -o ptr++ $ ./ptr++ sizeof(int)=4, sizeof(void)=1, sizeof(char)=1 0xbffffda4 -> p_int=0xbffffda8, p_voi=0xbffffda5, p_char=0xbffffda5

2000|10|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|