zoukankan      html  css  js  c++  java
  • 动态分配内存

    1、自动分配内存:当定义一个基本类型的变量的时候,系统会为这个变量自动分配内存,这个内存在堆上。当作用域结束,系统会自动讲这个内存回收。

        动态分配内存:开发人员自己向系统申请的内存空间,申请的内存位于栈上,当作用域结束之后,系统是不会自动回收内存的,这个内存必须由开发人员自己去释放,如果不释放,就内存泄露了。

    2、什么时候需要动态分配内存

     程序运行过程中,需要保存/记录相应的数据,但是有没有提前准备好内存,那么就需要临时动态分配内存。

    3、使用的函数

     void  *malloc(size_t);

     size_t: 希望申请的内存空间(字节byte)

     void *:系统一开始不知道你需要存放什么数据,不同的数据需要的内存空间不一样,所以默认就是给一个void *,泛指所有指针类型(char *,int *,struct *),当在使用的时候必须将void * 转化为相应的类型。如果没有申请成功,那么返回值为NULL

    4、释放内存

     用free(void *)

    注意:free里面的参数必须是指针变量,这个指针指向的内存必须是动态分配的。

    5、realloc

    void * realloc(void*, size_t);

    这里括号外面的void *是指返回重新分配的内存空间的首地址 

    括号里面的void *指针指向的内存区域必须是使用malloc分配过的

    size_t是指现在总共需要多少内存空间

    注意:如果使用realloc没有获取到内存空间,那么必须对之前的内存进行释放

           

  • 相关阅读:
    react 和 vue 的优缺点总结
    解决js小数求和出现多位小数问题
    同步循环发请求用promise
    hook中ref使用
    只能输入数字和保留三位的小树
    react添加右键点击事件
    redux
    深拷贝和浅拷贝区别及概念
    pointer-events的css属性。使用该属性可以决定是否能穿透绝对定位元素去触发下面元素的某些行为
    React 使用link在url添加参数(url中不可见)
  • 原文地址:https://www.cnblogs.com/zhaopengs/p/5045980.html
Copyright © 2011-2022 走看看