On Sat, Feb 4, 2012 at 11:12 AM, Adrian Scoica <[email protected]> wrote: >> >> Nu e suficient sa il recompilezi? >> > > Famous last words. Problema e una interesanta, oricum... iata cateva > situatii in care all hell breaks loose: > > 1) v = malloc (4 * 100); // this is just plain stupid, dar se intampla > cand serializezi structuri cu picioarele, pt protocoalele vietii > 2) #define MAXINT 0xFFFFFFFFul; // guess again > 3) Iata un exemplu pe care l-am vazut chiar in BitDefender: > unit32_t i; > // 100 linii de cod. > for (i = 0; i < v.size(); ++i) { > } > > v.size() in buildul respectiv era unsigned pe 64 biti, iar idiotul > care a scris functia a pus pragma de warninguri pentru ca facea o alta > porcarie in functie si nu s-a prins. Daca cumva size() era mai mare > decat 0xFFFFFFFF, atunci bucla aia cicla la infinit. > > 4) Apelurile de sistem. Sunt diferente (mici, dar musca rau). > > Daniel a postat anul trecut pe lista de SO un articol fun. Nu o sa > caut in mail, pentru ca am sanse mai mari sa il regasesc de la 0 pe > www... deci daca poate sa reposteze cineva link-ul, ar fi super.
http://software.intel.com/en-us/articles/collection-of-examples-of-64-bit-errors-in-real-programs/ _______________________________________________ http://lists.rosedu.org/cgi-bin/mailman/listinfo/rosedu-general
