So-net無料ブログ作成

引数でポインタを変更しないことを明示するには? [C/C++]

C++で関数の引数にポインタを渡すとき、その渡された関数内でポインタの指しているデータ、または、ポインタを変更しないことを明示したい。

これは const を用いれば可能だ。 「ポインタの指しているデータ、または、ポインタを変更しないこと」というのは、言葉だと分かりにくいけど、サンプルコードを見れば分かりやすい。

//example 1
int toge(const int* p)
{
*p = 22; // NG
p = new int(100); // OK
}

int toge(int* const p)
{
*p = 22; // OK
p = new int(100); // NG
}

int toge(const int* const p)
{
*p = 22; // NG
p = new int(100); // NG
}
ちなみに const int* const p であっても、delete は有効らしい。すなわち次のようになる。
void example1Const(const int* const p)
{
delete p; // OK
}
ということは、関数の引数に何かのインスタンスを渡したら、いつの間にか delete されてしまうことがあり得ると言うことですね。怖いねぇ。
タグ:C++ programming

ファイルの指定した行数以降を表示するには? [Linux]

何らかのログを解析するときに、tail コマンドを利用することが多い。tail コマンドは

tail filename

とすると、末尾の 10 行を表示する。そして、

tail -n 100 filename

とすると、末尾の 100 行を表示する。

では、ファイルの先頭 200 行目以降からファイル末尾まで表示するにはどうしたら良いか?これは、

tail -n +200 filename

で可能だ。

応用としてこんな例が思いつく。ログに日付が書いてあって、ある日付以降のログだけを見たいとしよう。このとき、

grep -n "2010-01-01" filename

として必要な部分のログの行番号を調べた後、

tail -n +行数 filename

とすれば、 ある日付以降のログだけを見ることができる。


タグ:linux SHELL command

SH905i で 8GB の microSDHC が使えた [NT]

2007年冬に発売された NTT DoCoMo(ドコモ) の 905i シリーズの携帯電話。
そのうち Sharp(シャープ) 製  SH905i は microSDHC カードが使用できる。microSDHC とは microSD の上位規格であり、2G 以上の記憶容量を持つ。

NTT DoCoMo のページには使用できる microSDHC カードは 4GB までとある。しかし、試して見たところ、

Transcend microSDHCカード 8GB Class6 永久保証 TS8GUSDHC6

Transcend microSDHCカード 8GB Class6 永久保証 TS8GUSDHC6

  • 出版社/メーカー: トランセンド・ジャパン
  • メディア: エレクトロニクス

が使えた。ただし、NTT DoCoMo のページに

SDオーディオのご利用は2GBまでの対応となります。

と記載があるように、SD オーディオとしては利用できないようだ。

データボックスで microSDHC カードの容量を確認すると 7,966,720KB と表示されているので、正しく認識されているっぽい。SD オーディオでは利用できないが、それを利用しないのなら大容量のメモリが使える。

私が試したのは Transcend microSDHCカード 8GB Class6 永久保証 TS8GUSDHC6 であり、他のカードは試していないし、もしかすると、製造された時期とか同じ機種でも違いがあるかもしれないので、購入される方は自己責任でどうぞ。


タグ:SH905i microSDHC

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。