关于c语言变量的内存分布测试程序
#include <stdio.h>
#include <stdlib.h> const int const_global = ; // 常全局变量
int init_global = ; // 初始化全局变量
int uninit_global; // 未初始化全局变量 int main (int argc, char* argv[]) {
const static int const_static = ; // 常静态变量
static int init_static = ; // 初始化静态变量
static int uninit_static; // 未初始化静态变量 const int const_local = ; // 常局部变量
int prev_local; // 前局部变量
int next_local; // 后局部变量 int* prev_heap = malloc (sizeof (int)); // 前堆变量
int* next_heap = malloc (sizeof (int)); // 后堆变量 const char* literal = "literal"; // 字面值常量
extern char** environ; // 环境变量 printf ("---- 命令行参数与环境变量 ---- <高>\n");
printf (" 环境变量:%p\n", environ);
printf (" 命令行参数:%p\n", argv);
printf ("-------------- 栈 ------------\n");
printf (" 常局部变量:%p\n", &const_local);
printf (" 前局部变量:%p\n", &prev_local);
printf (" 后局部变量:%p\n", &next_local);
printf ("-------------- 堆 ------------\n");
printf (" 后堆变量:%p\n", next_heap);
printf (" 前堆变量:%p\n", prev_heap);
printf ("------------- BSS ------------\n");
printf (" 未初始化全局变量:%p\n", &uninit_global);
printf (" 未初始化静态变量:%p\n", &uninit_static);
printf ("------------ 数据 ------------\n");
printf (" 初始化静态变量:%p\n", &init_static);
printf (" 初始化全局变量:%p\n", &init_global);
printf ("------------ 代码 ------------\n");
printf (" 常静态变量:%p\n", &const_static);
printf (" 字面值常量:%p\n", literal);
printf (" 常全局变量:%p\n", &const_global);
printf (" 函数:%p\n", main);
printf ("------------------------------ <低>\n"); printf ("查看/proc/%u/maps,按<回车>退出...", getpid ());
getchar (); return ;
}
关于c语言变量的内存分布测试程序的更多相关文章
- C语言变量声明内存分配
转载: C语言变量声明内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结 ...
- C++类内存分布
http://www.cnblogs.com/jerry19880126/p/3616999.html#undefined 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看 ...
- [C语言 - 2] C语言变量
A.变量的作用域: 1.局部变量:在函数或者代码块内部定义的变量 作用域:从定义处到代码块结束 生命周期:从定义处分配控件,代码块结束后被回收 局部变量没有默认值,要自己初始化 2.全局变量:在函 ...
- C++ 类的内存分布
C++类内存分布 转自:http://www.cnblogs.com/jerry19880126/p/3616999.html 先写下总结,通过总结下面的例子,你就会明白总结了. 下面总结一下: ...
- 【转】C++类-内存分布
C++类内存分布 - 转载自Jerry19880126 - 博客园 的文章 在上面这篇文章的基础上做了些整理. 主要讨论了C++类对象的内存分布结构. 来看看编译器是怎么处理类成员内存分布的,特别是在 ...
- 转载:C++类内存分布
本文转自:http://www.cnblogs.com/jerry19880126/p/3616999.html,原文写的非常好,从中学到了虚继承的概念,也学会了用VS查看内存分布. 说下C++内存分 ...
- 【C++ Primer | 15】C++类内存分布
C++类内存分布 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承.虚函数存在的情况下. 下面可以定义一个类,像下面这样: c ...
- 【转】C++类内存分布
C++类内存分布 https://www.cnblogs.com/jerry19880126/p/3616999.html 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看 ...
- c++类内存分布解析
首先使用Visual Studio工具查看类的内存分布,如下: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内 ...
随机推荐
- C#异步的世界【上】
新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...
- C#通过外部别名,解决DLL冲突问题
今天遇到一个有两个DLL文件,命名空间,部分类名与部分方法名一样,但是方法的功能实现不一样.调用方法时,无法调用指定DLL的指定方法.在网上找了好多,简单总结一下. 1.首先添加引用,不细说. 2.右 ...
- 没有花括号(大括号)的for循环也能正确执行
代码一 for循环没有{}大括号(花括号),在for语句下面是一条语句. for(var i=0;i<3;i++) console.log(1,i); 上面的代码能无误输出: 1 01 11 2 ...
- python之路 - 基础4
1.函数非固定参数 *args *kwargs def test(*args): print (args) test(1,2,3,4,5) test(*[1,2,3,4,5]) #*args = *[ ...
- Linux之初体验
预备作业03--我的Linux初体验 学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 一开始以为这个项目很简单,以往也在自己的笔记本上看教程安装过软件, ...
- centos 安装apache activemq
安装说明 安装环境:CentOS-6.3 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz下载地址http://activemq.apache.org/downloa ...
- Android studio使用smack连接xmpp服务器收发消息
我使用的是ejabberd16.09的Linux版本,安装教程网上有很多,我在这里只介绍一下Android端连接.登录和收发消息的方法.文章最后附上了我写的一个demo,欢迎大家参考. ejabber ...
- 集合点(lr_rendezvous)
含义: 当通过controller虚拟多个用户执行该脚本时,用户的启动或运行都不一定是同时的.集合点是在脚本的某处设置一个标记,当有虚拟用户运行到这个标记时,停下等待,知道所有用户到达这个标记处,再一 ...
- arm指令集
http://blog.chinaunix.net/uid-20769502-id-112445.html
- FZU 2243 Daxia like uber
枚举,最短路. 求出5个点出发的最短路,然后枚举一下这些点之间走的顺序. #pragma comment(linker, "/STACK:1024000000,1024000000" ...