静态存储和动态存储
变量从变量值存在的时间(即生存期)角度分:静态存储方式和动态存储方式
静态:在编译时确定了固定的内存地址与内存大小,如:函数里的局部变量、全局变量等
动态:由程序控制,运行时主动性的向系统申请所需大小的内存段,并且每次分配到的内存地址不固定
在动态存储区存放数据:
1、函数形式参数
2、自动变量(未加static声明)
3、函数调用时的现场保护和
返回地址
存储类别
内存中的存储区域包括下面几个部分:
①程序代码区:存放函数体的二进制代码
②静态区/全局区(static):全局变量和静态变量的存储 区域
③堆区(heap):程序员分配释放
④栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值
函数
malloc()函数
功能说明:malloc() 是最常用的函数之一,它允许从空闲内存池中分配内存
函数原型: void *malloc(size_t bytes)
bytes:要申请的字节数
返回值:成功时返回内存段首地址,否则返回NULL
注意:通过malloc函数申请的内存空间,未自动初始化
代码示例:
#include <stdio.h>
#include <windows.h>
void main()
{
int *p,n,i,j,temp;
printf("\n Enter number of elements in the array: ");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int));
if(p == NULL){
printf("memory error");
return;
}
for(i = 0;i < n;++i) {
printf("\n Enter element no. %d: ",i+1);
scanf("%d",p+i);
}
for(i=0;i<n-1;++i)
{
for(j=i+1;j<n;++j)
if(*(p+i