exitするとローカル変数のデストラクタが呼ばれない話

#include <iostream>
#include <string>

class Test {
public:
  Test(std::string str) : mStr(str) {
    std::cout << mStr << " create." << std::endl;
  }
  ~Test() {
    std::cout << mStr << " delete." << std::endl;
  }
private:
  std::string mStr;
};

Test test1("test1");

int main(void) {
  Test test2("test2");
  exit(0);
  
  return 0;
}

すると

test1 create.
test2 create.
test1 delete.

知らんかった……

MacでAndroidのソースコードをビルドするまでのメモ

まだ開発環境を何もいれていない前提です。
まずパッケージマネージャとして今回はHomebrewを使うことにしました。
MacPortsとかを使う方はその辺は適宜置き換えてくださいというかAndroidのwikiに普通に書いてありました*1

環境の確認

MacOS 10.6.6

Xcodeのインストール

http://developer.apple.com/ からXcodeを取ってきてインストール
最新のバージョンは3.2.5でした。

Homebrewのインストール

ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"

必要なツールのインストール

brew install git repo gnupg

Androidのサイトには他にも色々書いてありましたが、これ以外は無くても大丈夫な模様。
Xcode付属toolのバージョン次第でしょうか。

必要な設定の変更

.zshrcに追記

# プロセスが同時に開けるファイルディスクリプタ数を修正
ulimit -S -n 1024

# envsetup.shで怒られる件への対応
unsetopt NOMATCH

HFS+なディスクイメージの作成

デフォルトのハードディスクフォーマットでは大文字小文字が区別されずサポート外なのでandroid用にディスクイメージを作成します。
アプリケーション→ユーティリティー から ディスクユーティリティーを起動して、
新規イメージで容量8GB以上、"大文字小文字を区別、ジャーナリング"なフォーマットを選んで作成します。
出来たディスクイメージは/Volumes以下にマウントされる模様です。

Androidのソース取得とビルド

cd /Volumes/<android_disc_name>
mkdir <target_android_src_dir_name>
cd <target_android_src_dir_name>
repo init -u git://android.git.kernel.org/platform/manifest.git
repo sync
. ./build/envsetup.sh
lunch
make

repo syncはすごく時間がかかります。1〜2時間くらい?
これでとりあえずmakeは通りました。

*1:あとから気づいた…

27インチiMac購入!

ボーナスを当て込んで注文して、先週くらいに届きました!
27inch iMac Core i7 Mem8GBな感じです。


で、早速問題が発生していて、SnowLeopardがどうこうとかいうレベルではなくて、温度が上がってくると熱暴走して画面が乱れるという現象。
なんで熱暴走じゃないかと思うのかというと、本体が熱くなってきた時に限り、トリプルディスプレイで表示している3画面のうち内蔵グラボで表示させている2画面だけが乱れるから。


良く考えてみれば普段からあまりにも静音すぎるし、ファンの回転数が最低に落ちたまま上がらなくなってしまっているのではないかと思われる。
->smcFanControlという手動ファン回転数管理ソフトを入れて弄ってみたら、ものすごい勢いで熱風が吹き出してきました。


ファームウェアかOSあたりのバグなんですかね。これ。
温度に応じてファン回転数を制御するとこがおかしくなってるんじゃないかなぁ。


まぁ少なくとも画面が乱れるという現象は僕のだけじゃなくて、他の人にもあるみたいなのでサポートに連絡してみますかね?
https://discussionsjapan.apple.com/thread/10084014?tstart=0

アセンブラ勉強中

はじめて読む8086―16ビット・コンピュータをやさしく語る (アスキーブックス)を読み終わったので、はじめて読むMASM―ソフトウェア環境のからくりを学ぶを注文しました。
しかし評判通り本当にこの本は良書でしたね。
色々なところで断片的に学んでいたハードウェア寄りの知識がアセンブラという観点から綺麗に整理できる感じ。


次のMASMの本はもうちょっとアセンブラのお作法的な話かな?と思っているんですが、さてさてどんな内容なのか楽しみです。


はじめて読むMASM―ソフトウェア環境のからくりを学ぶ

はじめて読むMASM―ソフトウェア環境のからくりを学ぶ