malloc申请的内存大小_最大内存取决于主板还是cpu

malloc申请的内存大小_最大内存取决于主板还是cpu申请内存的几种方法1、void * malloc(size_t size)//头文件#include<malloc.h>解读:在堆区上申请size大小的空间,返回堆区上这个空间的起始地址申请空间是来连续的堆空间需要么memset初始化使用完需要释放free返回

申请内存的几种方法   1、void * malloc(size_t size)//头文件#include<malloc.h>   解读:在堆区上申请size大小的空间,返回堆区上这个空间的起始地址申请空间是来连续的堆空间需要么memset初始化使用完需要释放free返回空间的首地址   如何使用:   如果直接解引用   malloc开辟失败会返回一个空指针   我们需要判断是否申请内存成功   代码:
malloc申请的内存大小_最大内存取决于主板还是cpu
malloc申请的内存大小_最大内存取决于主板还是cpu
malloc申请的内存大小_最大内存取决于主板还是cpu
malloc申请的内存大小_最大内存取决于主板还是cpu   2、void * calloc(int num,size_t size);   calloc 初始化+开辟动态内存空间//头文件#include<malloc.h>   解读:在堆区上申请num个size大小的空间,返回堆区上这个空间的起始地址,并且把所有素初始化成0num:素数目,不需要memset申请到的是连续的堆空间,即申请num个大小为size的连续地址空间需要释放   代码
malloc申请的内存大小_最大内存取决于主板还是cpu
malloc申请的内存大小_最大内存取决于主板还是cpu   3、void * realloc(void * ptr, size_t new_size)   realloc 调整动态内存空间大小   一段时间后,我们可能会觉得,之前申请的空间太小或者过大了,为了合理且灵活使用内存时,我们可以用realloc对动态内存空间进行大小的修改   //头文件   #include<malloc.h>   realloc函数用于修改一个原先已经分配的内存块的大小,可以使一块内存的扩大或缩小。   当起始空间的地址为空,即*ptr = NULL,则同malloc。   当ptr非空:若nuw_size <   size,即缩小ptr所指向的内存空间,该内存块尾部的部分内存被拿掉,剩余部分内存的原先内容依然保留;   若nuw_size >   size,即扩大*ptr所指向的内存空间,如果原先的内存尾部有足够的扩大空间,则直接在原先的内存块尾部新增内存,如果原先的内存尾部空间不足,或原先的内存块无法改变大小,realloc将重新分配另一块nuw_size大小的内存,并把原先那块内存的内容复制到新的内存块上。因此,使用realloc后就应该改用realloc返回的新指针。   注意:再调用完realloc后就不能使用指向就内存的指针,而是用返回的新的指针。   代码:
malloc申请的内存大小_最大内存取决于主板还是cpu
malloc申请的内存大小_最大内存取决于主板还是cpu   小结   虽然动态内存空间使用很灵活,但我们还是需要注意以下常见的错误   对NULL(空)指针的解引用操作   对动态开辟空间的越界访问   对非动态开辟内存使用free释放   使用free释放一块动态开辟内存的一部分   对同一块动态内存多次释放   动态开辟内存忘记释放(内存泄漏)   三、 memset   名称:memset功能:初始化所指定的内存空间头文件:#include <stdlib .h>函数原形:void *memset(void *buffer,int c,int count);参数 :buffer 分配的内存c      初始化内容count 初始化的字节数返回值:返回指向buffer的指针   memset把buffer所指内存区域的前count个字节设置成某个字符的ASCLL值.一般用于给数组,字符串等类型赋值.   执行结果是10个0.   四、 memcpy   名称:memcpy功能:拷贝内存空间头文件:#include <stdlib .h>函数原形:void *memcpy(void *dest,void *src,unsigned int count);参数 :dest 目标内存区src    原内存区count 要复制的字节数返回值:指向dest的指针   memcpy会把src所指内存区复制count个字节到dest所指内存区.如果count比src字节数大,strcpy会拷贝’/0’后结束.要注意dest和src不要重叠.   memcpy只是拷贝内存空间,不处理空间重叠的问题.   运行结果为5个0.   五、 memmove   名称:memmove功能:拷贝(移动)内存空间头文件:#include <stdlib .h>函数原形:void *memmove(void *dest,void *src,unsigned int count);参数 :dest 目标内存区src    原内存区count 要复制的字节数返回值:指向dest的指针   Memmove和函数memcpy函数功能一样,但只是拷贝内存空间,不处理空间重叠的问题.Memmove会处理空间重叠问题.当dest和src重叠时,仍能正确处理,但src内容发生改变.   六、 memmove   名称:memcmp功能:比较两个内存空间的字符头文件:#include <stdlib .h>函数原形:int memcmp(void *buf1,void *buf2,unsigned int count);参数 :buf1 内存区buf2    内存区count 要比较的字符数返回值:见下面   Memcmp会比较内存区域buf1和buf2的前count个字节.Memcmp回根据ASCLL码表顺序依次比较.当buf1<buf2时,返回<0;当buf1=buf2时,返回0;当buf1>buf2时,返回>0.   运行结果:p1<p2   原文链接: c语言内存操作函数汇总_pfgmylove的专栏-CSDN博客_内存操作函数   原文链接:https://blog.csdn.net/sigusoft_/article/details/   原文链接:C语言 – 申请内存_wusu的博客-CSDN博客_c内存申请

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/36985.html

(0)
上一篇 2024年 9月 9日 上午10:47
下一篇 2024年 9月 9日 上午10:53

相关推荐

关注微信