トップ «前の日記(2009-03-10) 最新 次の日記(2009-03-12)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|

ToDo:


2009-03-11

_ 同じじゃなかったと思うんだ

http://d.hatena.ne.jp/odz/20090310/1236698884

#include <stdio.h>

struct Foo {
    int i;
};

void with_paren() {
    Foo* foo = new Foo;
    foo->i = 42;
    delete foo;
    foo = new Foo;
    printf("with paren: %d\n", foo->i);
}

void without_paren() {
    Foo* foo = new Foo;
    foo->i = 42;
    delete foo;
    foo = new Foo();
    printf("without paren: %d\n", foo->i);
}

int main() {
    with_paren();
    without_paren();
}

手元の GCC では同じ結果になりやがったけど、 cl.exe では、

with paren: 5374216
without paren: 0

とかになった。

↑コメントで指摘いただいたけど with と without が逆。ひどい

(00:43)

_ IA-32 Intel Architecture Software Developer's Manual

紙媒体でゲットした。

反応が以上に悪かったけど、 インテルの英語サイトの方にある連絡先に 本全部の注文番号を送って後は ping しまくれば良かった。 ちゃんと通れば1円も払わずにわざわざ海外から送ってくれる。

嬉しいと言わざるをえない。

(10:43)

_ 露出狂

http://hiraitamado.web.fc2.com/mindex.html

まなぶ以外はどんな感じなのかなあと適当に見てみたらいいの見つけた。 実は新都社すごいんじゃないかな

(22:12)

_ 記憶が確かなら

http://d.hatena.ne.jp/odz/20090311/1236775799

POD型は () をつけるとゼロ初期化だったと思うます。

ゼロじゃなくて各メンバに () つけるとかだったかも知れないけど PODなら実質同じだよね。

あと cl.exe もできたバイナリも wine で動かしてます

dmc.exe とか dmd.exe とか bcc32.exe とかも入ってて、 GCC でクロスコンパイルするとかよりこっちの方がラクなんだよな…

(22:16)

_ new なくても

じゃなかったけと思ったけど これだとなんかな…

#include <stdio.h>

struct S {
    int i;
};

void print_s_without_paren() {
    void* i;
    (&i)[-1] = (void*)42;
    S s;
    printf("%d\n", s.i);
}

void print_s_with_paren() {
    void* i;
    (&i)[-1] = (void*)42;
    S s = S();
    //const S& s = S();
    printf("%d\n", s.i);
}

int main() {
    print_s_without_paren();
    print_s_with_paren();
}

まぁなんかしら GCC でもこっちなら movl $0, -0x10(%rbp) とかがあるかどうかが変わる

(22:28)

_ せるげーむ反省会

http://shinh.skr.jp/h/?HackTheCellPostMortem

懇親会は詳しい検討はむずかしいかも、 とのことなのでまぁやる方向でいいんじゃね、 ということに

勝手に書き換えていただけると幸いです。 あと kik さん kodera さん herumi さんは強制参加です。 ぜひ

(23:41)

本日のツッコミ(全4件) [ツッコミを入れる]
_ bear.mini (2014-05-24 10:42)

関数名および printf() 内のメッセージの with と without が逆じゃないですか?
(with_paren がカッコついてるほうで、without_paren がカッコついてないほう、という意図ですよね?)

それにしても、こんな落とし穴があったなんて、さすが C++(ほめ言葉)

_ shinh (2014-05-24 10:42)

うわあ逆ですね。ありがとうございます。

こういう話を嬉々としてするから C++ オタはキモいとさげすまれ、アンチ C++ が増えるだけな気しかしなくて素敵です。

_ 団子厨 (2014-05-24 10:42)

セルゲーム反省会の一番最後のLarrabeeってなんすかwwww
参加できないと言いましたが内容次第では新幹線のチケットとります。

_ shinh (2014-05-24 10:42)

や、なんか深く考えたわけではないのですけど、やはり Cell と言えば「結局今後あのへんの世界どーなんの?」って話はあるんじゃないかなぁと。内容は深く考えてないので期待外れとかでも知ったこっちゃない感じではありますごめんなさい。でも、本当に新幹線で来ていただけるのであれば後の宴会代くらいはおごらせていただきますよ :)

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2009年
3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
1.shinh(2014-05-24 10:42) 2.団子厨(2014-05-24 10:42) 3.shinh(2014-05-24 10:42)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h