- 论坛徽章:
- 0
|
原帖由 2eye 于 2007-7-2 22:32 发表
请给出不严谨的例子,和“内存对齐浪费很多”的详细意思,是说不要内存对齐,还是说没有注意到内存对齐而浪费很多内存呢?
谢谢!
我想他是说“因为内存对齐,内存浪费很多”。
下面给出个简单的例子:
- #include <stdio.h>
- struct s_a{
- char a;
- int b;
- char c;
- int d;
- };
- struct s_b{
- char a;
- char c;
- int b;
- int d;
- };
- int
- main()
- {
- printf("sizeof s_a = %u\n", sizeof(struct s_a));
- printf("sizeof s_b = %u\n", sizeof(struct s_b));
- return 0;
- }
复制代码
这个程序在我机器上(I686 linux)未加任何参数编译后的输出为:
sizeof s_a = 16
sizeof s_b = 12
很显然,相同的数据成员,不同的排列,确占用的不同的内存空间。当然你可以让编译器不进行字节对齐,但是那是以增加CPU负担为低价的,而且移植性不好(ANSI C中没有明示)。 |
|