天达云 科技型企业
|
亚太互联网络信息中心(APNIC)成员
|
注册免费体验
[
加载中...
] - [
免费注册
]
|
用户中心
|
在线充值
|
投诉举报
首页
域名注册
云虚拟主机
云服务器
网站模板
网站制作
渠道合作
帮助中心
天达云首页
>
互联网学习教程
>
系统运维
> 如何应用C语言变量的内存排布
如何应用C语言变量的内存排布
更新:HHH 时间:2023-1-7
一个典型的C程序存储分区包含以下几类:
Text段
已初始化数据段
未初始化数据段
栈
堆
之前对C语言的变量在内存中的排布有些混淆,故进行了以下几个方面的简要整理(所有的实例均是基于X86 PC Ubuntu上GCC编译的)。
变量定义时,不同的变量分配的内存地址的增长方向
(1) 定义两个全局变量,在赋值编译后打印其在内存中分配的地址,发现先定义的变量被分配在内存中的低地址中
(2) X86 PC Ubuntu的main函数中定义变量,使用gcc编译时查看系统对变量分配的内存地址(内存分配的增长方向是低地址到高地址)
结构体实例化之后,结构体中成员分配的内存地址的增长方向
(1) 定义全局结构体且初始化,gcc编译后查看结构体成员内存分配的增长方向(内存分配的增长方向是由低向高向上增长)
(2) 在main函数中对结构体且初始化,gcc编译后查看结构体成员内存分配的增长方向(内存分配的增长方向是由低向高向上增长)
函数中定义变量时,使用的栈空间的内存的增长方向
arm在使用arm交叉编译工具链时,一般的变量的内存分配是向上增长方向的,但是对于栈上的内存分配时采用的满减栈的方式对栈上内存分配给变量使用的,栈的生长方向时向下生长方向的.
返回系统运维教程...
新手上路
全站内容搜索
互联网教程
域名购买流程
域名解析方法
产品管理
域名解析管理
云虚拟主机管理
数据库 . 管理
云服务器. 管理
支付方式
在线支付
付款方式
银联付款
发票开具
关于我们
关于我们
公司资质
代理加盟
代理登录
400-837-6568
7 * 24小时全天全国服务热线400电话