CopyMemory doesn't need to be cleaned up if you're copying between variables you own, since the VB garbage collector manages them entirely. I have no idea how a special cache might help CopyMemory without being an awful headache to programmers, though it certainly benefits from hardware caching. I've never heard of CopyMemory being replaced.

One thing I should mention is that I don't believe all VB6 arrays are laid out sequentially in memory, so CopyMemory may or may not be useful. I imagine for something named RGBQuad this isn't an issue.

Edit: Actually, Milk makes a good point about reference types. CopyMemory could screw up the garbage collector's reference counting in that case, I think.