RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
C语言动态内存分配详解-创新互联

C语言 动态内存分配详解

成都创新互联专业做网站、成都做网站,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文推广等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。

动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆(操作系统):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

\在C语言中,全局变量分配在内存中的静态存储区,非静态的局部变量(包括形参)是分配在内存的动态存储区,该存储区被称为栈。除此之外,c语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要是随时释放。这些诗句临时存在一个特别的自由存储区,称为堆区。

系统提供了四个库函数来实现内存的动态分配:

(1)malloc(size) 在内存的动态存储区中分配一个长度为size的连续空间。
(2)calloc(n,size) 在内存的动态存储区中分配n个长度为size的连续空间。
(3)free(p) 释放指针变量p做指向的动态空间。
(4)realloc(p,size) 将指针变量p指向的动态空间大小改变为size。

举个栗子:

#include
#include

int main()
{
  void check(int *);
  int *p1, i;
  p1 = (int *)malloc(5*sizeof(int));
  for ( i = 0; i < 5; i++)
   scanf("%d",p1+i);
  check(p1);
  getchar();
  getchar();
  return 0;
}
void check(int *p)
{
  int i;
  for (i = 0; i < 5; i++)
  if (p[i] < 60) printf("%d", p[i]);
  printf("\n");
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:C语言动态内存分配详解-创新互联
新闻来源:http://lswzjz.com/article/djdeso.html