Software memory errors are a growing threat to software dependability. In previous work, we proposed an approach for detecting memory errors, called Diverse Partial Memory Replication (DPMR), that utilized automated program diversity and memory replication. The original design aimed to maximize coverage by making the pointers stored in different memory replicas comparable. In this paper, we propose and evaluate an alternative design called Mirrored Data Structures (MDS), which sacrifices pointer comparability to gain three primary benefits. 1) MDS significantly increases DPMR's applicability by eliminating all DPMR restrictions on memory allocation, pointer arithmetic, and pointer-to-pointer casts. 2) For programs that store many pointers to memory, MDS reduces DPMR's overhead, as is demonstrated in experimental results. 3) MDS significantly reduces DPMR's memory footprint.