黑马程序员技术交流社区

标题: 内存浪费了吗? [打印本页]

作者: 风筝1025    时间: 2015-3-29 14:02
标题: 内存浪费了吗?
  1. #include <stdio.h>

  2. /*
  3.         1.内存寻址由大到小,优先分配内存地址比较大的字节变量
  4.         2。变量越先定义的变量,内存的地址越大
  5.         3.取得地址的值:&变量名
  6.         4.输出地址:%p
  7. */

  8. int main(void){
  9.        
  10.            char e = 100;
  11.        
  12.         int a = 10;
  13.        
  14.         int b = 10;

  15.         int f = 100;
  16.        
  17.         char c = 'a';
  18.        
  19.         char d = 100;
  20.         /*
  21.                 %p用来输出地址
  22.                 &是一个取地址运算符,取得变量的地址
  23.         */
  24.         printf("e的地址:%p\n",&e);
  25.         printf("a的地址:%p\n",&a);
  26.         printf("b的地址:%p\n",&b);
  27.         printf("f的地址:%p\n",&f);       
  28.         printf("c的地址:%p\n",&c);
  29.         printf("d的地址:%p\n",&d);
  30.        
  31.         return 0;
  32. }
复制代码

输出:
2.png (60.02 KB, 下载次数: 0)

记得char类型的变量占一个字节,e的内存地址是0022FF1F,为啥为第二个int变量分配的内存地址相差了8个字节,是我的系统问题还是有些内存分配浪费了?
作者: asd26187    时间: 2015-4-13 16:50
应该是系统的问题,windows系统里面对于变量有一个分类,包括全局,静态,动态变量等等,所以可能是因为系统默认把第一个变量归类到其他类型变量里面去了,导致地址相差很多。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2