This is an obsolete circa year 2001 page that deals with programming in C. Many of the links are old and broken.
- Is Clarity More Important Than Correctness?
- If your program is clear you can make it correct.
Can you be sure your program is correct if it isn't clear?
- J. Blustein <jamie@csd.uwo.ca>, How to Debug.
Daniel from Camp Nazareth out in Minnesota suggested this: The Many Languages of IT Programming
These first items are selected to be of use to people writing programs in the Algonquin environment in 1999.
This is made obsolete with the VALGRIND software under Linux.
You can make sure all your malloc/free function calls are matched by using the MEM software package. It replaces these C Library function calls: malloc, calloc, realloc, strdup, and free. Select here for details. You can pick up the software itself by selecting here.
Modern environments use valgrind to debug memory leaks.
| - | Compiling at home and at Algonquin: How to do it! |
| - | Creating a DOS executable (to enable redirection) in Turbo C and Borland C. |
| - | Catching Integer Overflow: How to do it. |
| - | Changing the Run-Time Stack and Heap Size: Check this out if you have a large program that keeps faulting. You may be running out of internal heap or stack space. |
| - | Defensive C Programming: Avoid C traps. |
| - | Robert Allison of Algonquin College describes how to write C programs. |
| - | Improving and Fixing C Code, using examples from Algonquin student assignments. |
| - | Different ways to write Zero in C |
These are items that I think C programmers should see.
| - | Steve Summit's Introductory C course. (highly recommended!) | ||||||||||||||||||
| - | Programming and Unix tutorials | ||||||||||||||||||
| - | A mirror of Introduction to Object Oriented Programming Using C++: a tutorial on programming in C++, sponsored by the Globewide Network Academy [GNA] of free Internet courses | ||||||||||||||||||
| - | Frequently Asked Questions about C programming. | ||||||||||||||||||
| - | Lysator Computer Society's Hotlinks to C Resources | ||||||||||||||||||
| - | Ten Gotchas of the C language | ||||||||||||||||||
| - |
Information sources include:
|
||||||||||||||||||
| - |
Coding standards include:
|
||||||||||||||||||
| - |
C language courses/references include:
|
||||||||||||||||||
| - |
Other bits and pieces:
|
The Internet is full of security incidents arising from code that forgets to check for buffer overflow. This is a serious programming error, and I don't accept student code that does not protect itself against overflowing its own internal buffers. Check the size of the buffer before you append anything to it!
| - | CERT security advisory concerning failure to handle sign-extension in characters |
| - | CIAC security advisory concerning failure to check for input buffer overflow |
| - | AUSCERT security advisory concering failure to check for input buffer overflow |
| - | SANS
Digest: CURMUDGEON'S EXECUTIVE SUMMARY Buffer overflows appear to be the most common problems reported in May, with denial-of-service problems a distant second. Many of the buffer overflow problems are probably the result of careless programming, and could have been found and corrected by the vendors, before releasing the software, if the vendors had performed elementary testing or code reviews along the way. |
The International Obfuscated C Code Contest has some prime examples of how to write very confusing C code.
Once you think you understand loops and switch statements, see Duff's Device.
Support free and non-commercial
Internet.
This site works best in Any Browser, a campaign
for non-specific WWW.
This work is licensed under a
Creative
Commons License.
The real
definition of Hacker
Page Author and Webmaster: Ian! D. Allen idallen@idallen.ca