关于计算机存储的小知识

 

1.在计算机中 stack 的地址位是 从低到高 (按声明先后顺序),heap 则是相反

2.在intel 平台中存储数据是 高位数对应低位地址

int main(){
  char a=0,b=0;
  char *pa = malloc(sizeof(char))
   ,pb = malloc(sizeof(char));

  int *p = (int *)&b;
  *p = 258;

  printf("a = %d  b = %d\n",a,b);  // 1, 2
  printf("a = %p  b = %p\n",&a,&b);
  printf("pa = %p  pb = %p\n",&pa,&pb);
  printf("hello linux %d  %d \n",a,b);
  return 0;
}

以上代码由于 258D = ‭00000001 00000010‬b  ,  *p 对 &b 赋值会将b当成是 int 类型,将高位00000001数据存储到 低地址位&a中,将低位数据00000010‬ 存储到高位地址 &b中

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值