我是靠谱客的博主 飞快镜子,最近开发中收集的这篇文章主要介绍C语言-基础语法(九):内存管理【内存操作函数:memset()、memcpy()、memmove()、memcmp()】【堆区内存分配:malloc(size) 】【堆区内存释放:free(p)】一、内存分区(程序加载到内存前),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、内存分区(程序加载到内存前)

C代码经过预处理、编译、汇编、链接4步后生成一个可执行程序。

程序是一个普通的可执行文件,以下列出一个二进制可执行文件的基本情况:
在这里插入图片描述
通过上图可以得知,在没有运行程序前,也就是说程序没有加载到内存前,可执行程序内部已经分好3段信息,分别为3 个部分:

  • 代码区(text);
  • 数据区(data);
  • 未初始化数据区(bss);

有些人直接把data和bss合起来叫做静态区全局区

1、代码区

存放 CPU 执行的机器指令。通常代码区是可共享的(即另外的执行程序可以调用它),使其可共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。代码区通常是只读的,使其只读的原因是防止程序意外地修改了它的指令。另外,代码区还规划了局部变量的相关信息。

2、data段(全局初始化数据区/静态数据区)

该区包含了在程序中明确被初始化的全局变量、已经初始化的静态变量(包括全局静态变量和局部静态变量)和常量数据(如字符串常量

最后

以上就是飞快镜子为你收集整理的C语言-基础语法(九):内存管理【内存操作函数:memset()、memcpy()、memmove()、memcmp()】【堆区内存分配:malloc(size) 】【堆区内存释放:free(p)】一、内存分区(程序加载到内存前)的全部内容,希望文章能够帮你解决C语言-基础语法(九):内存管理【内存操作函数:memset()、memcpy()、memmove()、memcmp()】【堆区内存分配:malloc(size) 】【堆区内存释放:free(p)】一、内存分区(程序加载到内存前)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部