个人认为楼上的不懂C语言堆栈到底是怎么回事,按楼上说法,只是大概讲了下栈,没有讲堆.
要讲C语言的堆栈,要从计算机的数据内存分配讲起.
____________________
| Stack区(数组,指针,结构体,局部变量)
____________________
| Static变量(静态变量,全局变量)
____________________
| Heep区(堆区)
____________________
| 代码段
____________________
从上面示意图中可看出整个内存分配,堆分配是在内存中按块划分,也就是相对与函数malloc,realloc,calloc.这3个函数为内存分配函数.而且需要手动调用free函数释放资源,否则会造成大量的内存碎片.
如果楼主不相信可以自己写一个死循环,内部调用malloc函数,创建N个内存块,运行一段时间后,绝对会造成系统瘫痪,资源被耗尽.
栈区划分为计算机自身划分,即在函数或局部变量被调用时,系统自动为其分配栈,以后进先出为原则实现变量的保存,在函数调用完毕时,系统会自动释放栈内资源,所以,栈可以说是短命的(生存周期只在调用过程中).
这里只是粗略说了下堆和栈,另外再说下static-->静态区,全局变量或静态变量存放于静态区,只要代码中存在静态变量或全局变量,自动放于静态区,静态区存放的变量生存周期是整个程序结束时才释放.
代码段区,顾名思义存放的是程序代码(暂时先这么理解).
原文地址:http://zhidao.baidu.com/question/22906947.html
分享到:
相关推荐
它提供了直接访问内存的机制,如`malloc`、`calloc`、`realloc`和`free`等函数,这些函数在C语言中用于动态内存分配和释放。 内存分配主要包括两种类型:静态内存分配和动态内存分配。静态内存分配在编译时完成,...
本文将深入探讨C语言的内存分配,包括程序的内存结构、内存分配函数的使用以及内存管理的基本概念。 首先,C程序在内存中主要有五种不同的区域:代码区、初始化数据区、未初始化数据区(BSS区)、堆区和栈区。代码...
在C语言中,动态内存分配是一项重要的编程技巧,它允许程序员在程序运行时根据需要分配内存,而不是在编译时预设固定的内存空间。本文将深入解析动态内存分配的细节和一个简单的C语言程序示例。 C语言提供了四个与...
### C语言动态内存分配研究及应用 #### 一、引言 C语言作为一种广泛应用的编程语言,在各种领域都有着重要的地位。对于C语言来说,内存管理是其核心特性之一,特别是动态内存分配,更是C语言程序设计中不可或缺的...
### C语言动态内存分配研究及应用 #### 一、引言 C语言作为一种广泛应用的编程语言,其灵活性和高效性受到开发者的青睐。在C语言中,内存管理是非常重要的一个方面,尤其是动态内存分配,它能够帮助开发者在运行时...
C语言提供了三种主要的动态内存分配函数:`malloc()`, `calloc()`, 和 `realloc()`。`malloc()`用于按需分配指定大小的内存块,返回一个指向该内存块的指针。`calloc()`与`malloc()`类似,但会初始化分配的内存为零...
- **内存分配**:在C语言中,内存分为四个主要区域:代码区、数据区、BSS区(未初始化数据区)和堆区。程序员可以通过不同的函数来动态地分配和释放内存。 - **代码区**:存储程序的机器指令,只读且可共享,用于...
C语言各数据类型内存分配精讲,深入剖析各数据类型的内存分配
再者,C语言数据结构是实现高效存储引擎的基础。在这里,双向链表和树结构被用于数据存储。双向链表允许我们在记录之间进行前向和后向的快速移动,适合于顺序查找和插入操作。而树结构,可能是B树或B+树,能够保持...
### C语言内存分配详解 #### 一、C语言的4G虚拟寻址空间概念 在C语言中,每个进程都有一个4GB的虚拟地址空间。这个空间被划分为不同的区域来存储不同类型的变量和数据。这里提到的4G指的是4GB(即4 * 1024 * 1024 ...
本项目专注于C语言中的动态内存分配,这在处理数据结构如链表、树或大型数组等时特别有用。在“动态内存分配C语言实现”中,我们将探讨以下几个关键知识点: 1. **malloc() 函数**:这是C语言中用于动态分配内存的...
C语言 动态内存分配详解 动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 栈(操作系统):由操作系统自动分配释放 ,...
`malloc.h`、`stdio.h`、`iostream.h` 和 `stdlib.h` 是C语言中常用的头文件,它们提供了必要的内存分配和输入/输出功能。 总的来说,这个实验提供了一个实践平台,让学生掌握虚拟存储器管理的基本概念,包括页面...
C语言动态内存分配 C语言动态内存分配是指在程序运行时分配内存空间,以满足程序的需求。在某些情况下,程序需要在运行时动态地分配内存,以便存储大量数据或处理不确定大小的数据。例如,在顺序对一批文件进行解析...
4. **内存对齐**:C语言中的内存对齐是为了优化数据访问效率,确保数据在内存中的位置符合特定的规则。了解并掌握对齐规则,可以避免不必要的性能损失。 5. **指针与内存**:指针是C语言中强大的工具,它可以直接...
内存缓冲区的建立和动态内存分配是其中的两个重要概念。让我们深入探讨这两个主题。 首先,内存缓冲区是一个预分配的内存区域,用于临时存储数据,以提高数据传输效率。在I/O操作中,它特别有用,因为可以减少磁盘...
3. 内存碎片:频繁的动态内存分配和释放可能导致内存碎片,即可用的内存被分割成许多小块,虽然总体上内存足够,但无法找到连续的大块内存满足大对象的分配需求,这会影响程序性能。 为了优化内存管理,可以采取...