Stupid mistakes in C programming
These are some stupid mistakes I made programming C.
strlen ("\0") in
malloc as a
substitute for 1. This is stupid because it gives a value of zero. The
correct way to do this is to write
sizeof ((char) '\0').
Added to a pointer twice
I added an offset to a pointer twice instead of once. Notice how
cur is added to
svbuf and then added again in the call
memcpy in the following: JSON::Parse pointer arithmetic error on Github.
This led to segmentation fault errors when the Perl module was parsing
long JSON strings containing escape characters like
Used sizeof (unsigned int *) to bsearch an array of unsigned integers
Given an array of unsigned integers,
unsigned int * keys; // something like 1, 2, 3
I searched them with
int *) for the "size of element" parameter:
found = bsearch (word, keys, n_keys, sizeof (unsigned int *), compare);
This actually worked perfectly well on the 32 bit computer, but on a 64-bit computer, when the size of an unsigned int was different from the size of a pointer to unsigned int, it caused all kinds of mystery crashes.