我是靠谱客的博主 飞快镜子,这篇文章主要介绍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)内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部