Patrick Audley // Identity Collected

URI
Last Modifed (approximate)
Sun, 27 Nov 2011 20:00:00 -0800
Author
Publisher
Blackcat Systems
Language
en-GB

Curriculum Vitae

I'm currently looking for full-time opportunities in the Greater Vancouver area. My real work experience is just like the below... only better with more cool technologies, a variety of nutty co-workers, lessons in code, love and life... and crammed with cowboys and sizzling gypsies. And a small Operetta too but I don't talk about that unless there is a lot of beer involved, sorry.

Read more...

Bench GCC

Tired of guessing which compiler flags work best for your pet projects?

bench_gcc allows you to test the effect of different compiler flag (and compilers if you wish) on your source using real world tests. All you need is a target program (with source) and a scriptable test case.

C++ Unit Testing Macros

Simple framework for integrating unit tests into C++ source files. Also contains some benchmarking routines and documentation on how to integrate it with automake.

This is just a refactoring of private code that I’ve used in several projects and have found useful &emdash; it’s not a substitute for a larger framework like CppUnit.

C++ LRU Cache Template

Fast, thread safe C++ template with Least Recently Used (LRU) removal semantics. Complete with a comprehensive unit test suite. Threading features require the BOOST scientific library to be installed.

Validating Malloc

A validating malloc in less than 200 lines of code (excluding comments). It’s written in C++ using the STL for efficiency but all function are declared using C linkage so you can use them from either C or C++ very easily.

There are lots of debugging malloc implementations, why another? Most of the implementations that I’ve found have been huge or not easy to understand and modify. This implementation is simple and well documented. It’s easy to understand how it works and modify it’s behaviour of you don’t like something.

Currently it understands and tries to catch:

  • Freeing already freed memory.
  • Reallocing pointers not previously malloced.
  • Over and under runs on malloced regions.
  • Failure to free memory before program exit.

It also contains utility routines that:

  • Hexdump regions on memory.
  • Allow annotation of memory regions.

which are useful on their own. Examples are provided of all the above in the “examples” directory of the distribution.