美文网首页
C语言内存四驱模型

C语言内存四驱模型

作者: 月影路西法 | 来源:发表于2019-07-09 21:20 被阅读0次

一、数据类型的本质

    1、数据类型可以理解为创建变量的模具,是固定内存大小的别名。

    2、数据类型的作用:编译器预算对象(变量)分配内存空间大小

二、void

1)、void简介

     void 的字面意思是“无类型”,void*则为“无类型指针”,void *可以指向任何数据类型。在c中不存在void类型的变量,因为c语言就没有定义void究竟是多大内存的别名。c语言中void有两种使用方式:

      1、用于修饰函数的返回值和函数参数,仅表示无,如果一个函数没有返回值,怎将其声明为void,如果没有参数,应该声明

         其参数为void

      2、用于数据类型的封装,例如: int InitHardEnv(void **handle)

2)、void指针的意义

      c语言规定只有相同数据类型的指针才可以相互赋值,因此void*指针作为左值用于“接收”任意类型的指针。void*指针作为右值赋值给其他指针时,需要进行强制类型转换。

三、变量

1)、概念:

        既能读又能写的内存对象,我们称为变量;一旦初始化后不能修改的对象我们称之为常量。

2)、变量的本质

        a、程序通过变量来申请和命名内存空间,例如:int a =0 。程序通过变量名访问内存空间(变量名实质是

             一段连续内存空间的别名)

在 c/c++ 中我们将运行时数据,分为四个区域分别是:栈区,堆区,数据区,代码区。我们详细来介绍下:

栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量值等

堆区(heap) 一般由程序员分配与释放(动态内存申请与释放),若程序员不释放,程序结束后可能由操作系统进行回收

全局区(静态区)(static)

全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,未初始化的

全局变量和未初始化的静态变量在相邻的另一块区域,该区域在程序结束后由操作系统释放。

常量区 字符串常量和其他常量的存储位置,程序结束后由操作系统进行释放

程序代码区   存放函数体的二进制代码

相关文章

  • C语言内存四驱模型

    一、数据类型的本质 1、数据类型可以理解为创建变量的模具,是固定内存大小的别名。 2、数据类型的作用:编译...

  • c进阶-内存四驱模型

    数组参数传递 代码如下 情况分析:我们会发现数组作为参数传递的时候获取不到长度,这是为什么呢?这是因为c/c++编...

  • C进阶 - 内存四驱模型

    一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书,强烈推荐读一下。在 java 中我们将...

  • C进阶 - 内存四驱模型

    一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书,强烈推荐读一下。在 java 中我们将...

  • iOS面试:iOS内存分区

    OC语言是C语言的超集,所以先了解C语言的内存模型的内存管理会有很大的帮助。C语言的内存模型分为5个区:栈区、堆区...

  • C基础-内存的四驱模型

    数据类型的本质 数据类型本质:一个固定大小连续的内存块。数据类型的作用:分配内存空间大小 变量的本质 变量的本质:...

  • Objective-C-(二)内存管理

    由于Objective-C是基于C语言的,在了解Objective-C内存管理前应该先了解下C语言的内存模型。 简...

  • iOS修饰符详解与block使用精粹

    #C语言内存分配 Objective-C从名字来看就可以知道是一门超C语言,所以了解C语言的内存模型对于理解Obj...

  • C语言内存模型

    内存四区 1栈区 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等 2.堆区 一般由程序员分配释放, 若程...

  • 什么是堆栈,以及堆栈的区别

    首先,讨论的堆和栈指的是内存中的“堆区”和“栈区”,OC语言是C语言的超集,所以先了解C语言的内存模型的内存管理会...

网友评论

      本文标题:C语言内存四驱模型

      本文链接:https://www.haomeiwen.com/subject/cydjoqtx.html