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

动态内存2

时间:2024-11-09 23:18:07浏览次数:3  
标签:函数 动态内存 realloc calloc 原有 空间

今天我们来介绍一下剩下的两个函数,calloc函数和realloc函数,现在我们就来学习。

1.calloc函数

这个函数跟malloc函数的用法大致相同,唯一区别就是calloc函数在申请空间后会帮你把每个字节初始化为0。

e241578255d84b22b73930fafbc2e56e.png

 2.realloc函数

这个函数让动态内存管理更加灵活。这个函数可以实现内存大小的调整,注意扩容时要写为原大小和增加的大小之和,不能单单写增加的大小。

realloc函数在调整内存空间时存在两种情况。

情况1:原有空间之后有足够大的空间(会在后面开辟空间,原有地址不会改变)。

情况2:后面空间不够时,realloc会开辟出一块空间,原有p的空间会被释放,p指向空间中存放的数据也会被realloc拷贝到新空间,这时p是一个新地址。

39568cf11add4b079acb5dbc9f0dbf79.png

5dace93449e14b0da28a81e5712f1813.png 

好了,今天分享就到这里,谢谢大家!!!

186db107286e4e90b3d0abef077bab83.png 

 

 

 

 

标签:函数,动态内存,realloc,calloc,原有,空间
From: https://blog.csdn.net/2403_86949771/article/details/143636704

相关文章

  • 动态内存(c)
    大家好,今天我们就来聊聊c语言中动态内存的一些知识,相信大家很多时候在申请空间时总会有空间不够用或者太大用不完的情况吧,这个时候使用动态内存就是一个不错的选择,下面我们便来了解一下。1.malloc函数这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针,注意并不......
  • 动态内存的相关知识点
    今天学了动态内存管理的相关知识点,首先什么是动态内存呢,我的理解是可大可小的,能够动态变化的。1.为什么存在动态内存分配我们已经掌握的内存开辟方式有:intmain(){ inta=10; intarr[10]={0}; intn; scanf("%d",&n); intarr1[n]; return0;}向上面......
  • 动态内存分配
    一、为什么要有动态内存分配二、malloc和free栈区中的数据出了作用域就会销毁;而静态区中数据的生命周期与全局变量一致,出了作用域也不会被销毁,直至程序结束后才会销毁。malloc函数与free函数需要包含的头文件是<stdlib.h>①malloc②free#include<stdio.h>#includ......
  • (C语言)动态内存管理,柔性数组
    1.为什么存在动态内存分配动态内存管理是C语言提供给我们自主维护空间大小的能力C语言提供了一个动态内存开辟的函数:void*malloc(size_tsize);这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。·如果开辟成功,则返回一个指向开辟好空间的指针。·......
  • c语言:动态内存管理中的malloc和free,calloc和realloc
    为什么要有动态内存分配?通过之前的学习,我们已经掌握的内存开辟方式有:inta=20;//在栈空间上开辟四个字节chararr[10]={0};//在栈空间上开辟10个字节的连续空间上述空间的开辟的大小是固定的数组在申明的时候,必须指定数组的长度,数组空间一旦确定了大小不能进行调整。......
  • string和初学指针和动态内存分配
    strcmp:原型定义于:<string.h>intstrcmp(constchar*str1,constchar* str2)比较的标准是ASCII从第一个字符开始比,直到遇到不同的字符或者返回NULL(0)若STR1[I]>STR2[I],返回1若STR1[I]<STR2[I],返回-1若STR1[I]=STR2[I],返回0strcpy:原型定义于<string.h>常用于字符串......
  • 动态内存管理详解
    目录1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常⻅的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态开辟内存的......
  • C语言:动态内存管理
    目录为什么要有动态内存管理mallocfreecallocrealloc为什么要有动态内存管理内存分为栈区、堆区、静态区,每个区存放的变量如下图:目前我们掌握的内存开辟方法有:创建结构体structs{inti;intc;};创建一些变量:intx;intu[10];charl;还有创建联合等…......
  • 动态内存管理(下)
    目录常见的动态内存的错误对NULL指针的解引用操作对动态开辟空间的越界访问对非动态开辟内存使用free释放使用free释放⼀块动态开辟内存的一部分对同一块动态内存多次释放动态开辟内存忘记释放(内存泄漏)柔性数组柔性数组的特点柔性数组的使用柔性数组的优势感谢各位......
  • 动态内存管理 (上)
    目录1.为什么要有动态内存分配 2.malloc和free2.1malloc2.11malloc申请空间和数组的空间有什么区别呢?2.2free3.calloc和realloc3.1calloc 3.2realloc 4.常⻅的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问 4.3对⾮动态开......