动态内存管理(上)

1.为什么会有动态内存管理
我们都知道申请内存有两个方法 ,

1.变量加变量名

如 int a=10;这就向内存内存中申请了四个字节的空间用来存放a的地址。

2.变量名加数组名

如 char arr[10]={0};这就向内存中申请了10个字节的空间用来存放数组arr的地址。

上面这两种方式有一定的局限性,如我们创建了一个int arr[10],后续发现我有30个元素,

这样就存放不了,反之也是一样的道理。但是有些小伙伴初学的时候容易写成下面的代码,

#include<stdio.h>
int main()
{
    int a = 0;
    scanf("%d", &a); 
    int arr[a];

    return 0;
}

以为做到了想多少输多少,其实是错误的,因为对于数组来说下标必须是常量或常量表达式,否则会报错。
2.内存的存储形式:图片说明
3.动态内存函数的介绍 malloc free calloc realloc
—、malloc函数

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<errno.h>
int main()
{
   int* p=(int*)malloc(40);//强制类型转化成int*,malloc向内存中申请40字节空间
    if(p==NULL)
   {
     printf("%s",strerror(errno));//打印错误码所对应的错误信息,
     return 0;//若为空则退出函数
   }
  for(int i=0;i<10;i++)
    {
       *(p+i)=i; 赋值
       printf("%d ",*(p+i));打印
    }
    free(p);//释放p所指向的空间
    p=NULL;//切断p和原来地址的联系
    return 0;
 }

————————————————
**二、free函**数
free函数介绍:1.free函数是专门用来释放动态内存开辟的空间的一的函数,和其他和其他动态内                               存申请的函数配套使用(相当于一个去借一个去还)。

    2.函数的参数形式void free(void*ptr)其中void*ptr是所要释放的指针

 注意:1.如果所释放的指针不是动态内存申请的,那free函数是不会释放的,并且                                       
         会导致程序崩溃,所以对于free函数的使用必须是动态内存函数申请的。
       2.如果是free(NULL);那么free函数什么也不做,程序也不会报错,此时的                                             
         free函数有跟没有是一样的
      3.free函数只是释放了*ptr所指向的空间,但还是可以通过*ptr找到当初所                                              
       申请的空间,为了防止错乱,应将*ptr=NULL,切断他们的联系。
  freed的使用可以看上面写过的代码。

*还有两个下次补充。写作不易,记得支持一下*。
————————————————
全部评论

相关推荐

真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务