编写程序,利用malloc
函数开辟动态存储单元,存放输入的3
个整数,然后求这3
个数中的最大值。
一个正在运行着的 C 编译程序占用的内存分为代码区、初始化数据区、未初始化数据区、堆区和栈区5
个部分。 1)代码区(text segment) 代码区指令根据程序设计流程依次执行,对于顺序指令,则只会执行一次(每个进程)。如果反复,则需要使用跳转指令;如果进行递归,则需要借助栈来实现。 2)全局初始化数据区/静态数据区(Data Segment) 只初始化一次。 3)未初始化数据区(BSS) 在运行时改变其值。 4)栈区(stack) 由编译器自动分配释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。 5)堆区(heap) 用来存放由动态分配函数(如malloc
)分配的空间。是由程序员自己手动分配的,并且必须由程序员使用free
释放。如果忘记用free
释放,会导致所分配的空间一直占着不放,导致内存泄露。这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。
内存的动态分配是通过系统提供的库函数来实现的,主要有malloc()
、 calloc()
、<