Monday, March 19, 2007

C++ Will Never Die

Wow. I can't believe this compiles in C++. The 'msg' that I am passing to the constructor is the same 'msg' that I am trying to create. Needless to say, that call to getNeighbor() puts a bunch of garbage in the object. It took me a very long time to track down the source of this garbage from some seg faults located in another thread. Boo.

void RPCCodeModule<T>::rpcReturn() {

// ...
// msg is not is not global, nor was it declared previously!
assert(false); // why I am using msg here? crazy
RPCMessage<T>* msg = new RPCMessage<T>(msg->getNeighbor());
// ...
}
}
 

5 comments:

  1. I've been trying to think of a circumstance when it might be helpful to be able to reference an object on the same line as it's instantiation, but I really just can't. I can't wait until I have the opportunity to get out of my c++ hole and learn a language that's actually fun to program in. btw you missed a sweet dance party at girl house the night you left. I got drunk, and broke the lamp above the pool table with my head while dancing. We all missed you dearly.

    love,
    Rand

    ReplyDelete
  2. I've got a C Code, not written by me, sent by a friend of mine. Do check it out. I am sure, the output shall amaze you. It uses Recursion with Pointers, just see if you could follow its trace?

    Code,

    #include
    main(int t,char _,char *a)
    {
    return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
    main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a )&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ): 9:16:t<0?t<-72?main(_, t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
    ,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
    +k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
    l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\ n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \ ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
    #'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/") :t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
    +1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
    i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

    Output,

    On the first day of Christmas my true love gave to me
    a partridge in a pear tree.

    On the second day of Christmas my true love gave to me
    two turtle doves
    and a partridge in a pear tree.

    On the third day of Christmas my true love gave to me
    three french hens, two turtle doves
    and a partridge in a pear tree.

    On the fourth day of Christmas my true love gave to me
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the fifth day of Christmas my true love gave to me
    five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the sixth day of Christmas my true love gave to me
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the seventh day of Christmas my true love gave to me
    sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the eighth day of Christmas my true love gave to me
    eight maids a-milking, sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the ninth day of Christmas my true love gave to me
    nine ladies dancing, eight maids a-milking, sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the tenth day of Christmas my true love gave to me
    ten lords a-leaping,
    nine ladies dancing, eight maids a-milking, sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the eleventh day of Christmas my true love gave to me
    eleven pipers piping, ten lords a-leaping,
    nine ladies dancing, eight maids a-milking, sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    On the twelfth day of Christmas my true love gave to me
    twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
    nine ladies dancing, eight maids a-milking, sevean swans a-swimming,
    six geese a-laying, five gold rings;
    four caalling birds, three french hens, two turtle doves
    and a partridge in a pear tree.

    ReplyDelete
  3. Neat, here's an explanation: http://research.microsoft.com/~tball/papers/XmasGift/

    rand

    ReplyDelete
  4. Dude, I am so sorry I missed the dance party. It sounds like an awesome time...

    ReplyDelete
  5. Excellent Explanation. Thanks Rand!

    ReplyDelete