Answers

Question and Answer:

  Home  C Programming

⟩ This program runs perfectly on one machine ...

This program runs perfectly on one machine, but I get weird results on another. Stranger still, adding or removing a debugging printout changes the symptoms.

Lots of things could be going wrong; here are a few of the more common things to check:

* uninitialized local variables

integer overflow, especially on 16-bit machines, especially of an intermediate result when doing things like a * b / c

* undefined evaluation order

* omitted declaration of external functions, especially those which return something other than int, or have ``narrow'' or variable arguments

* dereferenced null pointers

* improper malloc/free use: assuming malloc'ed memory contains 0, assuming freed storage persists, freeing something twice, corrupting the malloc arena

* pointer problems in general

* mismatch between printf format and arguments, especially trying to print long ints using %d

* trying to allocate more memory than an unsigned int can count, especially on machines with limited memory

* array bounds problems, especially of small, temporary buffers, perhaps used for constructing strings with sprintf

* invalid assumptions about the mapping of typedefs, especially size_t

* floating point problems

* anything you thought was a clever exploitation of the way you believe code is generated for your specific system

Proper use of function prototypes can catch several of these problems; lint would catch several more.

 170 views

More Questions for you: