c动态数组 动态申请内存 malloc函数的用法
2021/6/5 7:22:06
本文主要是介绍c动态数组 动态申请内存 malloc函数的用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文转载自“青布衫白少年”的文章,原文链接:https://blog.csdn.net/qq_42565910/article/details/90346236
在c++语言中对动态数组的申请我们可以用new来实现,但在c中我们可以用malloc函数来动态申请一块连续的内存空间。
malloc函数原型
extern void *malloc(unsigned int num_bytes);
意为分配长度为num_bytes字节的内存块
malloc函数返回值
如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
malloc函数使用注意事项
malloc函数的返回的是无类型指针,在使用时一定要强制转换为所需要的类型。
重点:在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放会造内存泄漏。
在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动之后可能出现申请的空间和释放空间大小的不匹配
malloc函数使用形式
关于malloc所开辟空间类型:malloc只开辟空间,不进行类型检查,只是在使用的时候进行类型的强转。
举个例子:‘我’开辟你所需要大小的字节大小空间,至于怎么使用是你的事
mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用
指针自身 = (指针类型*)malloc(sizeof(指针类型)*数据数量)
int *p = NULL; int n = 10; p = (int *)malloc(sizeof(int)*n);
在使用malloc函数之前我们一定要计算字节数,malloc开辟的是用户所需求的字节数大小的空间。
如果多次申请空间那么系统是如何做到空间的不重复使用呢?
在使用malloc开辟一段空间之后,系统会在这段空间之前做一个标记(0或1),当malloc函数开辟空间如果遇到标记为0就在此开辟,如果为1说明此空间正在被使用。
free函数
作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。
注意:使用后该指针变量一定要重新指向NULL,防止悬空指针(失效指针)出现,有效规避错误操作。
int main() { int *p = (int *)malloc(sizeof(int)); *p = 100; free(p); p = NULL; return 0; }
free函数在释放空间之后,把内存前的标志变为0,且为了防止数据泄露,它会把所释放的空间用cd进行填充。
这篇关于c动态数组 动态申请内存 malloc函数的用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Excel中实现拖动排序的简单教程
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解