|
|
|
|
|
by ah-
4384 days ago
|
|
You're completely right about shared_ptr not being the right tool for this use case. However, I haven't tried it but just looked up the implementation of std::shared_ptr in GCC 4.9.0, and accessing it is exactly the same as with a raw pointer. operator-> and operator* just return the internal pointer and do nothing else. There's some slight space overhead associated with shared_ptr, since it has to store the two counters for shared and weak references, so that might influence the runtime. unique_ptr should behave exactly like a raw pointer. That said, I'd love to see some benchmarks about this as well and would be even happier to be proven wrong. Another aspect I find interesting about this is that as the objects grow, it makes sense to store them in column-wise (one array/chunk of memory just for member1, one for member2, ...) instead of row-wise. I don't know any languages besides Q that make this way of storing data easy/the default. |
|