岩宿遺跡

群馬県の岩宿というところにある,

岩宿遺跡のなぞ (てのり文庫 (337B012))

岩宿遺跡のなぞ (てのり文庫 (337B012))

で有名な,岩宿遺跡に行ってきました.

岩宿遺跡といえば,石器時代,ナウマンゾウ.

結構すごいところかと思ったら,ほんとに「元」発掘現場なだけの場所.(一応資料館的なものと,ちょっと離れたところに博物館はあったけど.)

で,これが資料館的なもの.

入口に,岩宿遺跡を発見した相沢忠弘氏の銅像があります.

f:id:yasutomo57jp:20091030140030j:image

そしてこれが入り口.

f:id:yasutomo57jp:20091030140052j:image

f:id:yasutomo57jp:20091030140059j:image

この中に入ると...

この周辺を掃除してたおっちゃんがやってきて,「いらっしゃいませ」と言いながらおもむろに説明ビデオを放送するためにプロジェクタやオーディオの電源を入れ始めた.

ビデオの内容は,石器時代のことや,相沢忠弘氏のことに関する紹介.教育委員会が作ったらしく,教育的な内容になっていた.(ビデオ自体はかなりシュール)

最近遺跡マニアになりつつあるような気がする.

  • イギリス:ストーンヘンジ
  • 中国:兵馬俑
  • 群馬:岩宿遺跡

次は…?

C言語の char x[] と, char *x の違いを理解するためのコード.解答編

C言語の char x[] と, char *x の違いを理解するためのコードの解答ですが,ポイントは,「領域」にあります.

プログラムは,(色んな分け方がありますが)メモリ上ではいくつかの領域に分かれています.

  • コード領域:プログラムのコード本体が入っている領域
  • 定数領域:定数(リテラル)のための領域
  • スタック領域:変数や関数呼び出しなどに用いられる領域
  • ヒープ領域:動的にメモリを確保するとき用の領域

などがあります.

ここで,

int main(){
char x[] = "hoge";
char *y = "hoge";
x[0]='a';
y[0]='a';
return 0;
}

の2行目,

char x[] = "hoge";

では,文字列”hoge”5バイト分*1の配列xをスタック領域に確保し,そこへ’h’,’o’,’g’,’e’,’\0’の文字列を格納しています.

それに対して,3行目,

char *y = "hoge";

では,定数領域上に”hoge”という文字列の定数を,スタック上にはchar型のポインタを確保し,そのポインタに,定数領域上の”hoge”の場所を格納しています.

4行目ではスタック上に確保された”hoge”の先頭の文字を’a’に置き換えています.これはOK.

でも5行目では,定数領域上に確保された”hoge”の先頭の文字を置き換えようとしています.

定数領域は書き込み不可なのでここでセグメンテーション違反が起きます.

*1:'h','o','g','e','\0'の5文字.最後はヌル文字で文字列の終端を表す.

面白いのを見つけたので久々の日記

駐車場業界最大手企業の「月極グループ」と,日本最大の不動産会社「定礎」が合併して,「月極定礎ホールディングス」を設立したそうです.

月極グループは,よく見かける「月極駐車場」を運営している会社で,株式会社定礎もほとんどのビルで見かけます.

月極定礎ホールディングスの公式ページでは,中期計画とかまでしっかり公表されてます.

はてなの会社

頻繁に本社前を通ってることに気づいた.新風館行くときの通り道.

Twitする程度のことだが,はてなに関する記事なので一応ここに.