I rewrote this function, but I'm still getting this error. the mObjects vector is fine and so is all the objects. For some reason list is getting corrupted.
Although this may not solve your problem, for the sake of any level of efficiency at all, you should pass an std::vector as a reference to that function and return that same reference.
I don't see the need for the troublesome copying and/or moving from GridCell members to the output parameter that takes place in the GridCell::GetObjects method .
Can't you return read-only references or pointers to the original collection, or iterators of that collection, or the individual objects themselves? Even without memory corruption problems, these objects are owned by GridCell instances, and they shouldn't go anywhere else without a good reason.