Answer:
When designing a cache, you have to consider this things:
If the cache has a bigger block size may have a lower delay, but when miss the miss rate will be costly. If an application has high spatial locality a bigger block size will do well, but programs with poor spatial locality will not because a miss rate will be high and seek time will be expensive.
In most languages. Primitive data types ( char, int, float, bool, maybe string ) are usually passed by value, but compound data types are passed by reference, so you're not working on a copy but on the original.