博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于程序内存的问题
阅读量:6615 次
发布时间:2019-06-24

本文共 676 字,大约阅读时间需要 2 分钟。

首先要确定一点就是,一个程序在启动以后,系统才会为这个程序分配内存,内存无非就这几种:虚拟内存,内存,高速缓存,寄存器,姑且叫这些内存是物理内存吧,因为它们都是以物质形式存在,不是玩概念的.注意,此处说的物理内存与大众说的物理内存是不一样的.

然后再来看程序中使用的内存,这是玩概念的!
程序中的内存分为三类:静态内存,栈内存,堆内存. 这个是根据变量(或对象)定义形式的不同,而采用不同的内存管理方式,至于某个变量(或者)是放在上面说的哪种物理内存中,这个就由系统来管理了.程序真的管不了,因为系统会把程序"切来切去",暂时用不着的就切到最慢的物理内存中去,要干活的就切到CPU中的寄存器中去.
static,const 加了这些关键字的对象就放在静态内存中,函数的参数就放在栈内存中,new,malloc,HeapAlloc这三个函数或者运算符使用的内存就是堆中的.至于说到速度,我的分析是这样的,函数在CPU中执行的时候,才会有分配函数参数内存这么一说.所以它应该是最快的;其次,我也不知道静态对象的堆上面的对象哪个存取更快一点,如果它放在不一样的内存上,这就好判断了,可是这个地方只是玩的概念.
再多说一点点. new 是C++中的运算符号,增加了对"对象"构造函数的调用,malloc没有这个对象为对象完成初始化工作,但是new里面是使用malloc的,malloc是C的函数,C是跨平台的,那在windows中malloc是调用的HeapAlloc()这个函数在堆上面开辟内存的.至于malloc在其它系统上面调用什么API,我真的不知道!

转载地址:http://kxhso.baihongyu.com/

你可能感兴趣的文章
React Native入门项目与解析
查看>>
云计算:大势所趋 你准备好了么?
查看>>
数据资产的运营商--天市大数据交易平台
查看>>
中小企业如何成功转型跨境电商
查看>>
java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
查看>>
《ANTLR 4权威指南》——2.5 语法分析树监听器和访问器
查看>>
02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译...
查看>>
TIOBE 2016 年 5 月编程语言排行榜:Ruby 排名创历史新高
查看>>
这些国货,在阿里平台上被美国剁手党抢疯了
查看>>
《Excel 职场手册:260招菜鸟变达人》一第 2 招 常用快捷键Windows与Mac对照
查看>>
《Greenplum企业应用实战》一第1章 Greenplum简介1.1 Greenplum的起源和发展历程
查看>>
开源世界已成围城:成本让企业蜂拥而来,也让企业退缩转投
查看>>
嵌入式实时应用开发实战(原书第3版)》——3.3 保护模式架构
查看>>
《Python编程快速上手——让繁琐工作自动化》——1.4 在变量中保存值
查看>>
Git 两分钟指南
查看>>
想改进你的卷积神经网络?看看这14种设计模式!
查看>>
安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(六)
查看>>
[LeetCode]--100. Same Tree
查看>>
阿里蒋晓伟谈流计算和批处理引擎Blink,以及Flink和Spark的异同与优势
查看>>
快速掌握Redis——第二招:安装
查看>>