使用malloc函数或new运算符为链表结点分配内存空间
2024-08-31 16:24:43
使用malloc函数或new运算符为链表结点分配内存空间
当我们定义链表结点类型后,如何在每次需要使用新结点时临时分配相应大小的内存空间给新结点,本文介绍两种方法,即C语言中的malloc函数与C++中的new运算符。
1.malloc函数
malloc函数是C语言中stdlib.h
头文件下用于申请动态内存的函数,其返回类型是申请的同变量类型的指针,基本用法。
typename* p=(typename*)malloc(sizeof(typename));
以申请一个int型变量和一个node型结构体变量比例:
int* p=(int)malloc(sizeof(int));
node* p=(node)malloc(sizeof(node));
这个写法的逻辑是:以需要申请的内存空间大小(即sizeof(node))为malloc函数的参数,这样malloc函数就会向内存申请一块大小为sizeof(node)
的空间,并且返回指向这块空间的指针。但是此时这个指针是一个未确定类型的指针void*
,因此需要把它强制转换为node*型的指针,因此在malloc之前加上(node *)
。这样等号右边就得到一个node *型指针,并通过赋值等号把这个指针赋给node *,就成功申请了一块node类型大小的内存空间,即一个node *型的结构体变量,并通过指针p来访问它。如果申请失败,则会返回空指针NULL。失败一般发生在使用malloc申请了较大的动态数组,即
int *p=(int*)malloc(1000000 * sizeof(int));
//这样malloc会返回空指针并赋值给p。因此只要是正常分配一个结点的空间,是不会失败的。
2.new运算符
最新文章
- package.json 字段全解析
- 编写可维护的JavaScript代码
- UIImagePickerController在ios10环境一打开就crash的问题
- iOS 7 与 Xamarin - MultiPeer Connectivity(转载)
- 【算法题目】包含min函数的栈
- textLayout_1.0.0.595.swz
- cocos2d-x 3.6版连连看载入资源
- php目录分隔符DIRECTORY_SEPARATOR
- 去掉android的屏幕上的title bar
- ProgressBar样式总结与自己主动填充方法(代码)
- Java核心技术 卷Ⅰ 基础知识(2)
- 高级CSS
- 201621123050 《Java程序设计》第8周学习总结
- printf输出格式介绍(转)
- LeetCode算法题-Fibonacci Number(Java实现)
- 【hdu】4521 小明序列【LIS变种】【间隔至少为d】
- centos7目录统计之du命令
- 使用 zTree 右键菜单功能的总结
- R实战 第九篇:数据标准化
- 一篇关于spring ioc 依赖注入3种方式的文章引用