c/c++语言开发共享动态开内存(malloc与calloc)

malloc与calloc 1.函数原型 #include<stdlib.h> void *malloc(unsigned int size); //申请size字节的内存 void *calloc(unsigned int num, unsigned size); //申请num*size字节的内 …

malloc与calloc

1.函数原型

   #include<stdlib.h>

   void *malloc(unsigned int size);     //申请size字节的内存

   void *calloc(unsigned int num, unsigned size);    //申请num*size字节的内存

2.函数的返回值为void*类型,使用时需强制转换为所需要的类型;

   如果内存申请失败,则返回null,所以使用申请到的内存时需要先进行判断。

   如:char* p = (char*)malloc(6 * sizeof(char));

3.申请的内存位于堆中,不再需要使用时,需调用free函数释放

   void free(void *p);

注意:

1.void *与null

  int *p=null;

  void *p;

2.malloc与数组的比较:

(1)传给malloc函数的实参可以是一个表达式,从而可以“动态”申请一块内存;

(2)使用malloc函数申请的内存可以从函数中返回;而使用数组则不可以(存放在栈中,当函数返回时,内存已经被释放),示例代码如下:

 1 #include<stdio.h>   2 #include<stdlib.h>   3 int main()   4 {   5     char* func1();   6     char* func2();   7     char* pf1;   8     char* pf2;   9     pf1 = func1();  10     pf2 = func2();  11     printf("%sn", pf1);    //输出f1  12     printf("%sn", pf2);    //输出乱码,错误信息-返回局部变量的地址  13 }  14   15 char* func1()  16 {  17     char* p = (char*)malloc(3 * sizeof(char));  18     if (p)  19     {  20         p[0] = 'f';  21         p[1] = '1';  22         p[2] = '';  23         return p;  24     }  25     return null;  26 }  27   28 char* func2()  29 {  30     char p[3] = "f2";  31     return p;  32 }

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/602498.html

(0)
上一篇 2021年5月11日
下一篇 2021年5月11日

精彩推荐