当前位置: 首页 > news >正文

广州做网站哪家专业深圳高端人力资源公司

广州做网站哪家专业,深圳高端人力资源公司,做网站去什么公司好,贸易型企业网站建设在程序中我们访问的内存地址都是从物理内存上映射而来的虚拟地址,假设我们使用的计算机实际物理内存(PM)只有1GB,而Linux中执行着三个进程,Linux会将PM中的某段内存映射成三段4G大小相同的虚拟内存(VM&…

        在程序中我们访问的内存地址都是从物理内存上映射而来的虚拟地址,假设我们使用的计算机实际物理内存(PM)只有1GB,而Linux中执行着三个进程,Linux会将PM中的某段内存映射成三段4G大小相同的虚拟内存(VM),让每个进程都认为得到了需要的完整内存

进程内存布局

        在虚拟内存中内存是被分配给不同的部分的,具体每部分存储的内容如下图

对该图做几点说明:

1,栈中的环境变量和命令行参数在程序一开始运行之时就被固定在了栈底(即紧挨着内核的地方),且在进程在整个运行期间不再发生变化,假如进程运行时对环境变量的个数或者值做了修改,则为了能够容纳修改后的内容,新的环境变量将会被拷贝放置到堆中。

2,栈还有一个名称叫做“堆栈”,这是中文比较奇葩的地方:“堆栈”跟“堆”没有半毛钱关系。

3,栈和堆都是动态变化的,分别向下和向上增长,大小随着进程的运行不断变大变小。

4,静态数据指的是:所有的全局变量,以及static 型局部变量。

5,数据段的大小在进程一开始运行就是固定的,其中.rodata存放程序中所有的常量,.data存放所有的静态数据,而如果静态数据未被初始化,则程序刚开始运行时系统将会自动将他们统统初始化为0然后放置在.bss段中,这么做的原因是要节省磁盘存储空间:由于未初始化的静态数据在运行时一概会被初始化为0,因此在程序文件中就没有必要保存任何未初始化的变量的值了

6,如果没有一个极具说服力的理由,我们应该尽量避免使用静态数据,因为滥用静态数据至少有两个缺点:第一,静态数据的生命周期跟整个进程相当,也就是说不管你什么时候需要用到他们,他们在进程一开始运行的时候就已经存在了,而且就算你不再需要他们,在进程完全退出之前他们都不会释放,会无条件地一直占用内存。第二,静态数据中的全局变量是一种典型的共享资源,尤其在多线程程序中,共享资源是滋生“竞态”的温床(详见5.x.x小节),实在没办法要在多线程程序在使用全局变量,必须仔细地使用各种同步互斥手段保护他们,而不是简单粗暴地胡乱使用。

7,用户代码所在的.text段也称为正文段,.text是一个默认的名称,他将会囊括用户定义的所有的函数代码,实际上我们可以将某些指定的函数放置到自己指定段当中去,比如在程序代码中有一段音乐数据,我们可以将此段数据放置在一个.mp3的代码段当中(详见2.6.3小节),而.init段是存放的系统初始化代码,这部分代码之所以要放置在.init段是因为这个段当中的代码默认只会被执行一遍(初始化只能执行一遍),完成任务之后所占据的内存会被立即释放,以便节省系统资源,因此我们自己定义的函数如果也是在进程开始之初只执行一遍就不再需要,那么也可以将之放置在该段中。

堆(heap)

        堆内存被称为内存中的自由区,这是一个非常重要的区域,因为在此区定义的内存的生命周期我们是可以控制的域,对比其他区域的内存则不然,比如栈内存,栈的特点就是临时分配临时释放,一个变量如果是局部变量,他就会被定义在栈内存中,一旦这个局部变量所在的函数退出,不管你愿不愿意该局部变量也就会被立即释放,再如静态数据,他们都被存储在数据段,如前所述,这些变量将一直占用内存直到进程退出为止。

        堆内存的生命周期是:从malloc( )/calloc( )/realloc( )开始,到free( )结束,其分配和释放完全由我们开发者自定义,这就给了我们最大的自由和灵活性,让程序在运行的过程当中,以最大的效益使用内存。

        对堆操作的函数介绍如下

 堆最大的特点是自定义其生命周期,除了调用free(),不会因为所在函数退出而释放

此处增加一个示例表明使用方法

#include <stdio.h>
#include <stdlib.h>int *heap_array(int *old_ptr,int n);
void show(int *ptr);int main(int argc, char const *argv[])
{int n , *p = (int*)malloc(1 * sizeof(int));//分配一块int类型大小的内存p[0] = 1;while (1){if(scanf("%d",&n) == 0)//输入非数字则退出break;p = heap_array(p , n);//输入数字则扩展内存并将数字填入最新的堆show(p);}free(p);return 0;
}int *heap_array(int *old_ptr,int n)
{int size,*new_ptr;size = old_ptr[0]+1;new_ptr =(int*) realloc(old_ptr , size * sizeof(int));new_ptr[0] = size;new_ptr[size - 1] = n;return new_ptr;
}void show(int *ptr)
{printf("---> ");for (int i = 1; i < ptr[0]; i++){printf("%d ",ptr[i]);}printf("<---\n");}

http://www.laogonggong.com/news/63403.html

相关文章:

  • 房地产公司网站制作教育网站制作服务
  • 网站增值服务电子商务网站推广主要方式
  • 门户网站标题居中加大常用的设计网站
  • 武义建设局官方网站高职图书馆网站建设大赛
  • 成都市网站公司响应式网站建设价位
  • 网站开发职业技能简历做个人网站怎么做
  • 2013网站建设方案淘宝客网站搭建教程
  • 中国城乡建设经济研究所 网站discuz图片网站模板
  • 网站建设合同印花税税率流量型网站 cms
  • 中国字体设计网站网站建设用户量分析
  • wordpress制作网站步骤未成年在线观看视频播放免费
  • 建筑招工人在哪个网站比较好找青岛做网站的公司
  • 河北智能网站建设平台网站开发公司运营流程
  • 旅游手机网站建设惠州营销型网站建设
  • 新公司网站建设流程国外海报设计网站
  • 外贸做的亚马逊网站是哪个好如何申请免费的网站
  • 陕西网站设计电子商务网站建设实训报告
  • 建设网站的做彩票网站合法吗
  • 自己建设网站的利弊php能干嘛 wordpress
  • 山西网站建设服务网站建设企业网站制作平台
  • 网站建立的连接不安全wordpress安装及配置
  • 科技网站制作标志设计图片大全简单
  • 做二手网站建设网站东莞
  • 网站制作成本文字转码unicode
  • 公司签约网站怎样推广自己的产品
  • 张家港做网站的推荐jsp网站开发环境搭建
  • 便宜网站制作免费制作链接的软件
  • 网站建设课程设计实训总结iis添加网站ip地址
  • 建网站好还是开天猫好湖北住房与城乡建设部网站
  • app和微网站的对比模板网站设计报价