我是靠谱客的博主 飞快镜子,最近开发中收集的这篇文章主要介绍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)】一、内存分区(程序加载到内存前)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复