For some time now, I have searched and read a lot about memory alignment, how it works and how to use it. The most relevant article I have found so far is [this one][1].

But even with that I still have some questions about it:

 1. Except in embedded system, we often have huge chunks of memory in our computers that make memory management a lot less critical, I am completly into optimization, but now, is it really something that can make a difference if we compare the same program with or without it's memory rearranged and aligned?
 2. Does memory alignment have other advantages? I read somewhere that CPU work better/faster with aligned memory because it takes less instructions to process (if one of you have a link for an article/benchmark about it?), in that case, is the difference really significant? Are there more advantages than these two?
 3. In the article link, at chapter 5, the author say:
 > Beware: in C++, classes that look like structs may break this rule! (Whether they do or not depends on how base classes and virtual member functions are implemented, and varies by compiler.)
 4. The article talk mostly about structures, but are local variables declaration also affected by this need? 

  Do you have any idea of how memory alignment works exactly in C++ since it seems to have some differences?

[This former question][2] contains the word "alignment", but it does not provide any answers to the questions above.


  [1]: http://www.catb.org/esr/structure-packing/
  [2]: https://softwareengineering.stackexchange.com/questions/142328/what-kinds-of-low-level-knowledge-matter