g++で"-std=c++0x"が利用できるのは4.3以降だった。NetBSD-5.1のg++は4.1.3なので完全敗北……。Debian(squeeze)だとgcc 4.4.5なので、今回はDebian環境で試してみよう。 #msgcben
2011-12-10 14:41:22あれ、ヒープを解放したときにそのヒープ内から参照してる別のヒープが解放されないような 二回GCを回せば解放できるんだけど… #msgcben
2011-12-10 14:42:1316bit の、fastcall が、ax, dx, bx らしい。http://t.co/J2RknMjV 古すぎる
2011-12-10 14:43:3564bitのレジスタ渡しに対処するにはスタック走査の起点にする変数がレジスタ渡しにならないような工夫が必要ということかな? 手元に環境がないからわかんない… #msgcben
2011-12-10 14:44:22std::mapって初めて使った。ハッシュじゃなくて二分木だって聞いてたから使うの避けてたんだよね
2011-12-10 14:46:00g++に-std=c++0xをつけてコンパイルするとinsightでmainにbreakpointが設定できないらしい。 やってみたら確かに一部にしか設定できなくなっている。 #msgcben
2011-12-10 14:46:11む、Debian(squeeze)では"apt-get install g++"でg++をgccとは別にインストールする必要があるのか。 #msgcben
2011-12-10 14:57:49確認不足で色々とすみません。x64だと基本がレジスタ渡しなので、スタックフレームの中が逆になってしまいます。insightが古くてC++11未対応のため、mainを一番上に持ってきて、autoをやめて、insightにパスを通すとトレースできます。 #msgcben
2011-12-10 15:06:45auto を std::map<void *, bool>::iterator に変えて msys の share の下に insight-mingw ぶちこんで、 #msgcben
2011-12-10 15:12:17export PATH=$PATH:/share/insight-mingw/bin でパス通して、msys経由で insight立ち上げたら、うまくいきました #msgcben
2011-12-10 15:12:37そういえば、ソースコード中で「raise(SIGSTOP);」を書いておくと、gdb上で実行したときにブレークポイント停止してくれるはず。raise()には"#include <signal.h>"が必要。 #msgcben
2011-12-10 15:19:50再帰的にスタックをスキャンしてマークする練習問題に取り組む。 どうも何度も同じ場所をスキャンしてしまう。 マーク済みの箇所もスキャンする無駄な実装になっていた…orz #msgcben
2011-12-10 15:19:55Mono for Android の GC について
monodroid のGCというディープな話題が始まった。きっと、dalvik gc と、mono gc の華麗なる戦いの話になるに違いない。 #msgcben
2011-12-10 15:21:18@takekazuomi C++ 11の仕様(のうち、2010年には確定してたもの)で、VS 2010からの対応です。
2011-12-10 15:21:24moving GCっていうの初めて聞いた気がする copying GCでもコンパクションは行われると思うんだけど… #msgcben
2011-12-10 15:27:14