码迷,mamicode.com
首页 > 编程语言 > 详细

C语言中变量的内存排布

时间:2019-12-28 09:18:18      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:基于   内存分配   全局   ubuntu   com   实例化   gcc编译   内存地址   img   

之前对C语言的变量在内存中的排布有些混淆,故进行了以下几个方面的简要整理(所有的实例均是基于X86 PC Ubuntu上GCC编译的)。

  1. 变量定义时,不同的变量分配的内存地址的增长方向
    (1) 定义两个全局变量,在赋值编译后打印其在内存中分配的地址,发现先定义的变量被分配在内存中的低地址中
    技术图片
    技术图片
    (2) X86 PC Ubuntu的main函数中定义变量,使用gcc编译时查看系统对变量分配的内存地址(内存分配的增长方向是低地址到高地址)
    技术图片
  2. 结构体实例化之后,结构体中成员分配的内存地址的增长方向
    (1) 定义全局结构体且初始化,gcc编译后查看结构体成员内存分配的增长方向(内存分配的增长方向是由低向高向上增长)
    技术图片
    (2) 在main函数中对结构体且初始化,gcc编译后查看结构体成员内存分配的增长方向(内存分配的增长方向是由低向高向上增长)
    技术图片
  3. 函数中定义变量时,使用的栈空间的内存的增长方向
    技术图片
  4. arm在使用arm交叉编译工具链时,一般的变量的内存分配是向上增长方向的,但是对于栈上的内存分配时采用的满减栈的方式对栈上内存分配给变量使用的,栈的生长方向时向下生长方向的.

C语言中变量的内存排布

标签:基于   内存分配   全局   ubuntu   com   实例化   gcc编译   内存地址   img   

原文地址:https://blog.51cto.com/4265810/2462587

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!