使用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运算符

最新文章

  1. package.json 字段全解析
  2. 编写可维护的JavaScript代码
  3. UIImagePickerController在ios10环境一打开就crash的问题
  4. iOS 7 与 Xamarin - MultiPeer Connectivity(转载)
  5. 【算法题目】包含min函数的栈
  6. textLayout_1.0.0.595.swz
  7. cocos2d-x 3.6版连连看载入资源
  8. php目录分隔符DIRECTORY_SEPARATOR
  9. 去掉android的屏幕上的title bar
  10. ProgressBar样式总结与自己主动填充方法(代码)
  11. Java核心技术 卷Ⅰ 基础知识(2)
  12. 高级CSS
  13. 201621123050 《Java程序设计》第8周学习总结
  14. printf输出格式介绍(转)
  15. LeetCode算法题-Fibonacci Number(Java实现)
  16. 【hdu】4521 小明序列【LIS变种】【间隔至少为d】
  17. centos7目录统计之du命令
  18. 使用 zTree 右键菜单功能的总结
  19. R实战 第九篇:数据标准化
  20. 一篇关于spring ioc 依赖注入3种方式的文章引用

热门文章

  1. 每天学会一点点(map常量)
  2. Tomcat服务器学习和使用
  3. 3.httphandler和httpmodule各种的作用以及工作原理?
  4. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包
  5. FreeSql (十六)分页查询
  6. gemfire基本使用以及spring-data-gemfire的使用
  7. java架构之路-(设计模式)五种创建型模式之单例模式
  8. Vue-学习笔记0-独立项目搭建
  9. Java匹马行天下之C国程序员的秃头原因
  10. 微信小程序中的tabBar设置