首页 > 系统相关 >动态内存

动态内存

时间:2022-12-25 13:34:45浏览次数:40  
标签:释放 void malloc free 内存 动态内存 空间

malloc/free

void * malloc(size_t num)

void free(void *p)

malloc函数只关心申请的内存的大小。

malloc申请到的是一块连续的内存,有时可能会比所申请的空间大。其有时会申请不到内存,返回NULL。

malloc返回值的类型是void *,所以在调用malloc时要显式地进行类型转换,将void * 转换成所需要的指针类型。

 

释放一块内存中的一部分是不被允许的。 不允许重复释放。

 

 

ree(p)是释放p所指的空间,而不是释放p本身的空间。释放堆空间后,p成了野指针。

malloc与free是配对使用的, free只能释放堆空间。

如果malloc返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存malloc返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间。

标签:释放,void,malloc,free,内存,动态内存,空间
From: https://www.cnblogs.com/cnetsa/p/17003913.html

相关文章

  • 如何确保不使用动态内存
      在许多嵌入式应用程序中,内存分配必须是静态的,而不是动态的。意味着在应用程序中不应使用对malloc()或free()等内容的调用,因为它们可能会在运行时失败(内存不足、堆碎片)。......
  • Cpp Primer:Sec 12:动态内存
    目录Sec12动态内存12.1动态内存与智能指针12.2动态数组Sec12动态内存12.1动态内存与智能指针new:在动态内存中为对象分配空间,并返回一个指向该对象的指针delete:......
  • 如何确保不使用动态内存
      在许多嵌入式应用程序中,内存分配必须是静态的,而不是动态的。意味着在应用程序中不应使用对malloc()或free()等内容的调用,因为它们可能会在运行时失败(内存不足、堆碎片)......
  • 如何设置动态内存
        ......
  • LWIP 的动态内存管理
    LWIP的动态内存管理机制文件mem.hmem.c memp.c memp.h学习LWIP的动态内存管理机制可以有三种:C运行时库自带的内存分配策略(MEM_LIBC_MALLOC);动态内存堆(HEAP)分配策......
  • 动态内存函数
    malloc1开辟成功,返回一个指针2开辟失败,返回NULL3返回值是void*,需要强制转换4size为0未定义。intmain(){//向内存申请10个整形空间int*p=(int*)malloc(sizeof(int));......
  • 16.【C语言进阶】动态内存管理
    为什么存在动态内存分配栈区上的内存开辟intval=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间这样直接在函数体中开辟内存......
  • C语言动态内存管理
    在学习和使用C语言的过程中经常要编写管理内存的程序,往往提心吊胆。若是不想踩雷,唯一的办法就是深入理解内存管理,发现所有的陷阱并排除他们。内存的使用方式内存主要有三种......
  • C++语言动态内存管理介绍和示例
     C++动态内存    在C++程序中,所有内存需求都是在程序执行之前通过定义所需的变量来确定的。但是可能存在程序的内存需求只能在运行时确定的情况。在这些情况下,程序......
  • C和C++的动态内存管理
    内存分区栈区(stack):存放函数形参和局部变量(auto类型)和返回值,由编译器自动分配和释放堆区(heap):用于动态内存分配该区由程序员申请后使用,需要手动释放否则会造成内......