Linux下学C语言——第十三节 动态内存分配

编程入门 行业动态 更新时间:2024-10-05 23:24:01

Linux下学C语言——第十三节 动态内存<a href=https://www.elefans.com/category/jswz/34/1770682.html style=分配"/>

Linux下学C语言——第十三节 动态内存分配

malloxc,calloc,realloc ,free

1.头文件:#include <stdlib.h>

2.原则:谁申请谁释放

3.返回值:三个申请返回值都是 void * ,void*是百搭的,可以是char*也可以是int*

4.申请:

malloc (size_t size);//申请一个多大的空间

calloc (size_t nmemb, size_t size);//申请指定要多少个多大的空间

realloc(void *ptr, size_t size);//重新分配已经被分配的

5.释放:

Free(void *ptr);

我们释放指向空间的指针时,还应让指针直指向空。

Int *p = malloc(sizeof(int));

…..

Free(p);

P =NULL;

动态数组

#include <stdio.h>#include <stdlib.h>int main(){int *p;int num =5;int i;p = malloc(sizeof(int)*num);for(i = 0;i<num;i++)scanf("%d",&p[i]);for(i=0;i<num;i++)printf("%d",p[i]);printf("\n");exit(0);}

找错误并修改:

#include <stdio.h>#include <stdlib.h>void func(int *p, int n){p = malloc(n);if(p==NULL)exit(1);return;}int main(){int num = 100;int *p =NULL;func(p,num);free(p);exit(0);}  

//因为函数中使用了malloc所以是错的,如果不用malloc那就是对的。

修改1:

void func(int **p, int n)//二级指针,指向指针的地址,{*p = malloc(n); //*p相当于main函数中的pif(*p==NULL)exit(1);return;}int main(){int num = 100;int *p =NULL;func(&p,num);//传输指针的地址free(p);exit(0);}  

修改2:

void *func(int *p, int n)//返回值设为指针类型{p = malloc(n);if(p==NULL)exit(1);return p ;//返回指针}Int main(){p=func(p,num);//接收函数的返回值}

更多推荐

Linux下学C语言——第十三节 动态内存分配

本文发布于:2024-02-28 02:16:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1767615.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分配   内存   语言   第十三节   动态

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!