Low-cost, Concurrent Checking of Pointer and Array Accesses in C Programs