C语言:动态内存函数:malloc的使用详解 各个动态内存函数的使用条件! 1.动态内存的分配: 对于下列代码,所申请的空间是固定的: 但是对于数组arr[10],已经申请40个字节的空间,如果部分没有使用就会造成浪费,或者有可能不够,就得使用更多的空间,所以动态内存分配的存在,显得非常重要!! 对于上述的开辟的空间的方式,有两个特点: 1.空间开辟的大小是固定的!! 2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配!! 但是,对于空间的需求,不仅仅时上述的情况,有时候,我们需要的空间大小,在程序运行的时候才能知道,那数组的编译时 ,开辟空间的方式就不能满足了!! 因此,基于上述种种原因。动态内存开辟显得尤为重要!! 下面进入:malloc动态内存开辟函数的详解!! 使用语法为: size_t 是指:无符号的整型!! size: 是指:大小,单位为字节 malloc 这个函数,向内存申请size个字节的空间,然后将申请的空间的起始地址返回!! 但是,上述的返回类型为什么是:void*类型呢?? 原因在于:只申请了size个字节的大小,并没有指明内存中放什么类型的数据!导致不知道用什么类型的指针来维护这个空间合适!!所以,返回的是void* 的指针!! malloc 函数所需要的头文件为: #include <stdlib.h> 下面请看,使用案列: 在上面的void* p = malloc(40)中,向内存申请了40个子节的空间!malloc会返回一个地址,将这个地址放到void*的指针里面!! 若将malloc 开辟的40个空间里面放入10个整型!需要强制类型转化;代码书写情况为: 这个就是需要将malloc开辟的void*类型的指针强制类型转换为:int *类型的指针!! 但是,对于malloc开辟空间失败,则会返回一个空指针(NULL)!一般情况下,开辟空间都会成功,很少有失败的案列(开辟一个很大的空间,可能会失败) 开辟空间的代码使用情况 上述的代码,仅仅是为了向各位老铁介绍一下如何使用malloc函数!并不做其他作用,所以,在最后,笔者也没有进行用printf函数来打印出来代码!! 1.int* ptr = p; 如果不这样进行,在后面会有进行p++的部分,此时,p已经不再是初始地址,在进行free(p)会报错!!对于free()函数,只需要知道是释放动态开辟空间内存的就可以,其他的在后续博客有更新!!
对于malloc 是C语言提供的一个动态内存开辟函数! 这个函数向内存申请一块连续可用的空间,并且返回指向这块空间的指针!!1.如果开辟成功,则返回一个指向这个开辟好空间的起始地址2.如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查!!3.返回值的类型为:void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候,由使用者自己决定!!4.如果参数size为0,malloc的行为是标准为定义的,取决于编译器!!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/61242.html