linux 进程内存分布,linux C++ 的内存分布情况
写了一段代码,验证了一下内存的分布情况:
#include
using namespace std;
int k = 300;
static int global_static = 0;
const int i = 100;
#define n 10
const int j = 200;
int fun (int i = 1, int j =2)
{
const int k = 3;
static int l =0;
char *p = new char[n+1];
int m;
for(m = 0; m < n ; m ++)
*(p + m) = 'A'+ m;
*(p + m) = '\0';
cout << "Address of parameter variable:"<
cout << "&i = " << &i << "\t" << "&j = " << &j <
cout << "Address of local variable:" << endl;
cout << "&k = " << &k << "\t" << "&p = " << &p << "\t" << "&m = "<< &m <
cout << "Address of static local variable:" << endl;
cout << "&l = "<< &l << endl;
cout << "Address of heap: " << (void *)p << endl;
cout << "before delete p =" << p << endl;
delete []p;
cout << "after delete: "<< (void *)p <
cout << "p =" << p << endl;
return 0;
}
int main()
{
fun();
cout << "Address of global variable: " << endl;
cout << "&i = " << &i << "\t" << "&j = " << &j << "\t" << "&k = " << &k << endl;
cout << "Address of function: " << endl;
cout << "&fun = " << &fun << "\t" << "&main =" << &main << endl;
cout << "&global_static = " << &global_static << endl;
int block;
cin >> block;
return 0;
}
输出结果
Address of parameter variable:
&i = 0x7fff61c8c7cc &j = 0x7fff61c8c7c8
Address of local variable:
&k = 0x7fff61c8c7d8 &p = 0x7fff61c8c7d0 &m = 0x7fff61c8c7dc
Address of static local variable:
&l = 0x6022c8
Address of heap: 0x2168010
before delete p =ABCDEFGHIJ
after delete: 0x2168010
p =
Address of global variable:
&i = 0x400fb4 &j = 0x400fb8 &k = 0x602070
Address of function:
&fun = 1 &main =1
&global_static = 0x6022c4
=========================分割线===================
先说明几个概念:
在全局中定义的叫做全局数据类型,在某个函数中定义的叫做局部数据类型。
使用static修饰的叫做静态变量,使用const修饰的叫做常量
静态变量是i可以修改的,但是全局只有一个,但是常量是不能修改的。
静态变量(使用static修饰的,无论局部还是全局),全局变量,全局常量都在全局数据区中。需要注意的是:
1.局部的常量是存在栈中的,改局部常量在它的作用域中是不可修改的,但是当它所在的函数退出之后,该常量也会随之被析构。所以不能将局部常量的值作为返回值使用。
2.局部的静态变量虽然存储在全局数据区,但是作用域只能在所在的函数中,对其他函数不可见。
linux 进程内存分布,linux C++ 的内存分布情况相关推荐
- linux进程管理机制,linux进程管理,linux进程管理机制
linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...
- Linux进程间的通信----->共享内存
共享内存: 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式.不同进程之间共享的内存通常安排为同一段物 ...
- linux进程阻塞的原因,释放大块内存时的阻塞问题
一.前言 在堆上申请和释放内存的性能不高,这应该是常识了,尤其释放大块内存时,耗时更长,甚至会阻塞其他线程.做性能优化时,一般会采用内存池等手段避免频繁的申请和释放内存.本文从内核的角度分析申请和释放 ...
- linux进程间的通信(C): 共享内存
一.共享内存介绍 共享内存是三个IPC(Inter-Process Communication)机制中的一个. 它允许两个不相关的进程访问同一个逻辑内存. 共享内存是在两个正在进行的进程之间传递数据的 ...
- linux进程cpu时间片,Linux性能监控之CPU篇
这篇文章中,主要介绍CPU的一些基础知识. 首先介绍一下Linux kernel中的调度器(scheduler),调度器负责调度系统中的两种资源,一是线程,二是中断.调度器给不同资源不同的优先级.从高 ...
- Linux进程实践(1) --Linux进程编程概述
进程 VS. 程序 什么是程序? 程序是完成特定任务的一系列指令集合. 什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存.CPU时间 ...
- linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt
<linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...
- linux 进程管理 ppt,Linux内核结构与进程管理.ppt
Linux内核结构与进程管理.ppt Linux 内核结构与进程管理,Linux系统结构Linux kernel 开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成1. 进程调度 ...
- linux进程 面试题,Linux面试题,浅析常见Linux命令面试题及答案
原标题:Linux面试题,浅析常见Linux命令面试题及答案 对于Linux面试来说如果面试官问到你不会的问题,你就说这个不太熟悉,没有具体研究过,千万别不懂装懂,还扯一堆没用的话题来掩饰,这样只会让 ...
- linux 进程的操作,linux进程操作命令
linux进程操作命令 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 简单概述简单概述 Linux 进程操作命令进程操作命令Lin ...
最新文章
- RxAndroid之操作数据库SqlBrite(RXAndroid实现数据库的增、删、改、查)
- HP880G3 安装RHEL6.5
- python可以在线编程吗-有哪些 python 的在线练习题或编程挑战的网站?
- QQ牧场在高速模式下的一些小bug
- 通过带数据盘的自定义镜像来创建使用应用程序网关的虚拟机规模集
- python字典合并几种方式对比,Python合并两个字典的常用方法与效率比较
- 插入迭代器、流迭代器、反向迭代器、移动迭代器
- spark 提交至yarn异常超时 Client cannot authenticate via:[TOKEN, KERBEROS]
- 如何产生cpk图形_真正把Cp、Cpk、Pp、Ppk讲清楚!
- viewDidUnload方法的离去和替代
- 佐客牛排机器人餐厅_3分钟出餐!全球首家机器人餐厅开业
- android是j2me的一个实现吗,J2me和安卓有什么区别
- win10系统禁用音频服务器,win10未安装音频设备怎么办|win10声音找不到音频设备解决方法...
- 大牛直播SDK-Windows RTMP/RTSP/本地FLV播放器使用说明...
- Gom引擎Key.lic配套的X-FKGOM授权启动
- 一步一步搭建自己的web系统(一):搭建后端服务
- 不要害怕超级人工智能
- 编写PC操作系统的参考资料(不断更新)
- 【FLASH存储器系列十二】Nand Flash芯片使用指导之二
- shadow acne(阴影失真)和peter panning(阴影悬浮)