Reprint Address: http://blog.csdn.net/21aspnet/article/details/6729724First, the conceptAlignment is related to the location of the data in memory. If the memory address of a variable is exactly the integer multiple of its length, he is called natural alignment. For example, under a 32-bit CPU, assuming an integer variable has an address of 0x00000004, it is naturally aligned.Second, why byte alignmentThe root cause of the need for byte
Original address: http://blog.csdn.net/21aspnet/article/details/6729724
The end of the article I made a picture, a look at it, this problem on the Internet to speak a lot, but did not put the problem through.
First, the conceptAlignment is related to the location of the data in memory. If the memory address of a variable is exactly the number of integers in its length, he is called a natural alignment. For example, under the 32-bit CPU, assuming that
1. What is alignment?The memory space in modern computers is divided by byte (byte), theoretically it seems that access to any type of variable can start from any address, but the reality is that when accessing a particular variable, it is often accessed at a specific memory address, which requires all types of data to be spatially arranged according to certain rules, Instead of sequentially discharging one by one, this is the
This is my reprint of the article ~ The original source I did not find.The whole concept of the article is explained very clearly, but there are some mistakes in the area ... (red flag)I'll give you a supplement to the other blog posts: http://soft.chinabyte.com/database/9/12297509.shtmlThe above connected experiments can be supplemented.One, what is alignment, and why to align:1The memory space in modern computers is divided by Byte, and in theory i
Reprinted from http://blog.csdn.net/chengonghao/article/details/51674166Examples are particularly goodMany articles probably have a conclusion like this:
1. Data items can only be stored in memory locations where the address is an integer multiple of the size of the data item;
2. The first address of a struct variable can be divisible by the size of its widest base type member;
3. Align on N, meaning that the data "holds the starting address%n=0
Obviously, if the data
1.Let's look at the following example:struct a{Char C1;int i;Short S;Int J;}a;struct b{int i;Int J;Short S;Char C1;}b;struct A does not obey the byte alignment principle (in order to differentiate, I call it the Alignment declaration principle), structure B follows. Let's see what happens on the x86. The addresses of the individual members of A and B are printed first. You'll see that the spacing between th
One, what is the memory alignment? What do you use for memory alignment?
The so-called memory alignment is a means of optimizing memory access in a compile phase to allow more efficient memory access.
For example, for int x; (This assumes sizeof (int) ==4), because the CPU reads to memory is aligned, if the address of X is not a multiple of 4, then reading this
Original link: http://blog.csdn.net/shenbin1430/article/details/4292463Why are you aligning?The memory space in modern computers is divided by Byte, in theory it seems that access to any type of variable can start from any address, but the reality is that when accessing a particular type of variable, it is often accessed at a specific memory address, which requires all types of data to be spatially arranged according to certain rules, Instead of sequentially one by one emissions, that's the alig
Document directory
Note: From http://blogold.chinaunix.net/u1/45525/showart_436243.html
Ii. Effect of byte alignment on programs:
Iii. What principles does the compiler align?
4. How to modify the default alignment value of the compiler?
5. How should we consider byte alignment in programming?
6. potential risks of byte
Ext: http://www.cnblogs.com/ye-moooooo/p/4601189.html
What is the byte alignment, and why should I align it?The memory space in modern computers is divided by byte, theoretically, it seems that access to any type of variable can begin at any address, but the reality is that access to a particular type of variable is often at a specific memory address, which requires that various types of data be arranged in space according to certain rules, Instead
1. What is byte alignment? Why?
In modern computers, memory space is divided by byte. Theoretically, it seems that access to any type of variables can start from any address, however, the actual situation is that access to specific types of variables is often performed at specific memory addresses, which requires various types of data to be arranged in space according to certain rules, instead of sequential emissions, this is alignment.Alignment funct
Structure byte alignment
When we use the sizeof operator to calculate the space occupied by a struct, we do not simply add the space occupied by all elements in the struct. This involves the issue of memory byte alignment. Theoretically, access to any variable can start from any address, but in fact it is not. In fact, access to a specific type of variable can only be accessed at a specific address, in th
Memory alignment. To improve program performance, data structures (especially stacks) should be aligned as much as possible on natural boundaries. The reason is that the processor needs to perform two memory accesses to access non-alignment memory; however, alignment memory access only needs one access.Memory alignment
First, what is byte alignment?The memory space in modern computers is divided by byte (byte), in theory, it seems that access to any type of variable can start from any address, but the reality is that when accessing a particular variable, it is often accessed at a specific memory address, rather than sequentially one-by-one emissions. In order for the CPU to be able to quickly access variables, the starting address of the variable should have some ch
not aligned, these instructions will produce a generic protection exception (#GP). A four-word natural boundary is an address that can be divisible by 16. Other operations with a double four-word instruction allow unaligned access (no generic protection exception), however, additional memory bus cycles are required to access misaligned data in memory.How to avoid the effect of memory alignmentSo, can not only achieve the goal of improving performance, but also to save a bit of space. There is a
In fact, "4K alignment" is associated with a partitioning technique called "advanced format". "Advanced Format" is the international hard disk equipment and materials Association for the new data structure format adopted by the name. This is mainly due to the current expansion of hard disk capacity, so that the previously defined 512 bytes per sector is no longer reasonable, so that each sector 512 bytes to 4,096 bytes per sector, which is now often s
1. What is alignment and why:1. in modern computers, memory space is divided by byte. Theoretically, it seems that access to any type of variables can start from any address, however, the actual situation is that access to specific variables is often performed at specific memory addresses, which requires various types of data to be arranged in space according to certain rules, instead of sequential emissions, this is
The following are examples of memory alignment.
# Include
# Include Class Test{
};Int main (){Int I = sizeof (test );Printf ("% d", I );Getchar ();
}
Print result: ::::: it is 1
# Include # Include Class Test{Int;Char C;
};Int main (){Int I = sizeof (test );Printf ("% d", I );Getchar ();}
Printed result: 8
# Include # Include Class Test{Int;Char C;Char AA;};Int main (){Int I = sizeof (test );Printf ("% d", I );Getchar ();}
Printed result: 8
Introd
1. What is alignment and why:
1. in modern computers, memory space is divided by byte. Theoretically, it seems that access to any type of variables can start from any address, however, the actual situation is that access to specific variables is often performed at specific memory addresses, which requires various types of data to be arranged in space according to certain rules, instead of sequential emissions, this is
Reprint: http://blog.csdn.net/shenbin1430/article/details/4292463Why are you aligning?The memory space in modern computers is divided by Byte, in theory it seems that access to any type of variable can start from any address, but the reality is that when accessing a particular type of variable, it is often accessed at a specific memory address, which requires all types of data to be spatially arranged according to certain rules, Instead of sequentially one by one emissions, that's the alignment.
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.