`
闫老三
  • 浏览: 103224 次
社区版块
存档分类
最新评论

C语言的数据内存分配

 
阅读更多
个人认为楼上的不懂C语言堆栈到底是怎么回事,按楼上说法,只是大概讲了下栈,没有讲堆.

要讲C语言的堆栈,要从计算机的数据内存分配讲起.
____________________
|  Stack区(数组,指针,结构体局部变量)
____________________
|  Static变量(静态变量,全局变量)
____________________
|  Heep区(堆区)
____________________
|  代码段
____________________
从上面示意图中可看出整个内存分配,堆分配是在内存中按块划分,也就是相对与函数malloc,realloc,calloc.这3个函数为内存分配函数.而且需要手动调用free函数释放资源,否则会造成大量的内存碎片.

如果楼主不相信可以自己写一个死循环,内部调用malloc函数,创建N个内存块,运行一段时间后,绝对会造成系统瘫痪,资源被耗尽.

栈区划分为计算机自身划分,即在函数或局部变量被调用时,系统自动为其分配栈,以后进先出为原则实现变量的保存,在函数调用完毕时,系统会自动释放栈内资源,所以,栈可以说是短命的(生存周期只在调用过程中).

这里只是粗略说了下堆和栈,另外再说下static-->静态区,全局变量静态变量存放于静态区,只要代码中存在静态变量全局变量,自动放于静态区,静态区存放的变量生存周期是整个程序结束时才释放.

代码段区,顾名思义存放的是程序代码(暂时先这么理解).

原文地址:http://zhidao.baidu.com/question/22906947.html
分享到:
评论

相关推荐

    操作系统 内存分配与回收 C语言模拟(含源代码和.exe文件)

    它提供了直接访问内存的机制,如`malloc`、`calloc`、`realloc`和`free`等函数,这些函数在C语言中用于动态内存分配和释放。 内存分配主要包括两种类型:静态内存分配和动态内存分配。静态内存分配在编译时完成,...

    C语言的内存分配.pdf

    本文将深入探讨C语言的内存分配,包括程序的内存结构、内存分配函数的使用以及内存管理的基本概念。 首先,C程序在内存中主要有五种不同的区域:代码区、初始化数据区、未初始化数据区(BSS区)、堆区和栈区。代码...

    c语言中动态内存分配问题

    在C语言中,动态内存分配是一项重要的编程技巧,它允许程序员在程序运行时根据需要分配内存,而不是在编译时预设固定的内存空间。本文将深入解析动态内存分配的细节和一个简单的C语言程序示例。 C语言提供了四个与...

    C语言动态内存分配研究及应用.pdf

    ### C语言动态内存分配研究及应用 #### 一、引言 C语言作为一种广泛应用的编程语言,在各种领域都有着重要的地位。对于C语言来说,内存管理是其核心特性之一,特别是动态内存分配,更是C语言程序设计中不可或缺的...

    C语言动态内存分配研究及应用

    ### C语言动态内存分配研究及应用 #### 一、引言 C语言作为一种广泛应用的编程语言,其灵活性和高效性受到开发者的青睐。在C语言中,内存管理是非常重要的一个方面,尤其是动态内存分配,它能够帮助开发者在运行时...

    C语言实现内存管理

    C语言提供了三种主要的动态内存分配函数:`malloc()`, `calloc()`, 和 `realloc()`。`malloc()`用于按需分配指定大小的内存块,返回一个指向该内存块的指针。`calloc()`与`malloc()`类似,但会初始化分配的内存为零...

    C语言的内存分配[收集].pdf

    - **内存分配**:在C语言中,内存分为四个主要区域:代码区、数据区、BSS区(未初始化数据区)和堆区。程序员可以通过不同的函数来动态地分配和释放内存。 - **代码区**:存储程序的机器指令,只读且可共享,用于...

    C语言各数据类型内存分配精讲

    C语言各数据类型内存分配精讲,深入剖析各数据类型的内存分配

    存储引擎(C语言版本)_C语言内存管理_C语言内核编程_c语言数据结构_C语言存储引擎_

    再者,C语言数据结构是实现高效存储引擎的基础。在这里,双向链表和树结构被用于数据存储。双向链表允许我们在记录之间进行前向和后向的快速移动,适合于顺序查找和插入操作。而树结构,可能是B树或B+树,能够保持...

    c语言内存分配

    ### C语言内存分配详解 #### 一、C语言的4G虚拟寻址空间概念 在C语言中,每个进程都有一个4GB的虚拟地址空间。这个空间被划分为不同的区域来存储不同类型的变量和数据。这里提到的4G指的是4GB(即4 * 1024 * 1024 ...

    动态内存分配C语言实现

    本项目专注于C语言中的动态内存分配,这在处理数据结构如链表、树或大型数组等时特别有用。在“动态内存分配C语言实现”中,我们将探讨以下几个关键知识点: 1. **malloc() 函数**:这是C语言中用于动态分配内存的...

    C语言 动态内存分配详解

    C语言 动态内存分配详解 动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 栈(操作系统):由操作系统自动分配释放 ,...

    虚拟存储器管理——模拟内存分配与回收实验算法(c语言)

    `malloc.h`、`stdio.h`、`iostream.h` 和 `stdlib.h` 是C语言中常用的头文件,它们提供了必要的内存分配和输入/输出功能。 总的来说,这个实验提供了一个实践平台,让学生掌握虚拟存储器管理的基本概念,包括页面...

    C语言动态分配内存.ppt

    C语言动态内存分配 C语言动态内存分配是指在程序运行时分配内存空间,以满足程序的需求。在某些情况下,程序需要在运行时动态地分配内存,以便存储大量数据或处理不确定大小的数据。例如,在顺序对一批文件进行解析...

    C语言内存精讲.rar

    4. **内存对齐**:C语言中的内存对齐是为了优化数据访问效率,确保数据在内存中的位置符合特定的规则。了解并掌握对齐规则,可以避免不必要的性能损失。 5. **指针与内存**:指针是C语言中强大的工具,它可以直接...

    c语言中内存缓冲区的建立,并在缓冲区中动态分配内存

    内存缓冲区的建立和动态内存分配是其中的两个重要概念。让我们深入探讨这两个主题。 首先,内存缓冲区是一个预分配的内存区域,用于临时存储数据,以提高数据传输效率。在I/O操作中,它特别有用,因为可以减少磁盘...

    C语言的内存分析.pdf

    3. 内存碎片:频繁的动态内存分配和释放可能导致内存碎片,即可用的内存被分割成许多小块,虽然总体上内存足够,但无法找到连续的大块内存满足大对象的分配需求,这会影响程序性能。 为了优化内存管理,可以采取...

Global site tag (gtag.js) - Google Analytics