ncm: You are absolutely right on one count -- Linux detected the problem immediately. The immediate problem is that I am a moron, and memset from the wrong index, thereby overflowing my buffer. :) The code now works fine on Linux and FreeBSD.
However, Mac OS X is still claiming that an object returned from the array is an object of the expected type, but somehow doesn't respond to a message that it is supposed to. Very strange, and I'm not quite sure how to debug it. I'll figure it out, though.