2008-06-01から1ヶ月間の記事一覧

yet another

#include <cstdio> struct I { virtual I *f() = 0; }; struct A : virtual I { virtual I *f() { puts("A"); return this; } }; struct B : virtual I { virtual I *f() { puts("B"); return this; } B(I *x) { x->f(); } }; struct C : A, B { virtual I *f() { pu</cstdio>…

undef (?)

$ cat test.cpp struct A { A(A *a) { } }; struct B : virtual A { B(int x) : A(x ? this : 0) { } }; int main() { new B(1); } $ g++ test.cpp && ./a.out Segmentation fault追記:規格の 12.7#2 から未定義だと思って書いたんだけど、違うっぽい。他の…

ぷらすぷらす

id:succeed:20080623 に関して。C だと後置増分演算子の意味規則は次のように規定されている [6.5.2.4]。 後置++演算子の結果は、そのオペランドの値とする。結果を取り出した後、オペランドの値を増分する(すなわち、適切な型の値 1 をそれに加える。)。.…

共有メモリ

クラスタとかならともかく、単なるデュアルコア程度ではこういう現象は起こらないと何となく思っていた。 $ cat Test.java public class Test { public static void main(String[] args) { for (;;) test(); } static int a, b, x, y; static void test() { …

でってゅー

メールアドレスの全体は正規言語じゃないってゅー。コメントなんて使ったことないけど。

過信

停電等、電源が落ちている時でも電話は使えるものだと思っていたが、やってみたら出来なかった。電話機によるらしい。

カタカタ

Java で、リフレクション経由でメソッドを呼ぶときにはちゃんと実引数の型チェックが行われるのだが、JNI からだと省略されるみたい。で、やってみたら Throwable じゃないオブジェクトも throw できたり。Mac での例。 $ cat Test.java public class Test {…

副産物

Java 1.6。 $ cat Test.java import java.util.regex.*; public class Test { public static void main(String[] args) { String query = "Hello, world."; StringBuilder text = new StringBuilder(13 * 1024); for (int i = 0; i < 1024; i++) text.append…

idempotent

$ cat test.c #include <stdio.h> #include <string.h> size_t strlen(const char *p) { return (strchr(p, ',') - p); } char *f(char *p) { return strcat(p, ", World"); } int main() { char str[64] = "Hello"; puts(f(str)); puts(f(f(str))); puts(f(f(f(str)))); } $ gc</string.h></stdio.h>…

あげいん

こないだの正規表現ベンチ、Perl 5.8.6 にて。 $ cat regex.pl $query = "b" x (1024 * 1024) . "x"; $pat = '^b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b.*b$'; print ($query =~ $pat ? "yes\n" : "no\n"); $ $ time perl regex.pl no real 0m0.009s…

それにしても

道端に、かすれた手書きの「お願い:ニンジンを切ってください」という看板が立っていた。よく見たらエンジンだった。