IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:动态数组

共 2 篇相关文章

IT 累计浏览 2,506

zend php 动态数组

这篇讲的是如何从Zend PHP源码中学习动态数组的C语言实现。作者从C语言静态数组长度固定的痛点切入,指出在很多场景下我们无法预先知道数据规模,但又不想浪费内存预分配一个过大的数组。解决思路就是动态数组:先用malloc分配一块连续内存,通过指针像操作数组一样访问;当空间不足时,用realloc进行扩容(它会保留原有数据)。 文章的核心部分是剖析Zend PHP中动态数组的具体实现。作者展示了完整的头文件和源码,包括初始化、插入、获取、销毁等关键操作。其实现很巧妙:用一个结构体封装数组指针、元素大小、当前元素数和已分配容量;在push时,如果当前容量已满,就将容量翻倍进行realloc,确保了均摊下的高效插入;通过元素大小和偏移量计算,可以泛型地支持任意类型的数组。文末通过一个读取输入并输出的对比实验,直观展示了静态数组(固定缓冲区可能截断数据)和动态数组(随输入自动增长)在实际应用中的行为差异。

IT 累计浏览 4,096

动态数组的 C 实现

这篇讲的是在C语言中实现动态数组的过程。作者从“为什么标准C没有内置动态数组类型”这个基础问题出发,深入讲解了如何亲手构建一个可动态扩容的数组结构体。 文章的核心是实现思路:定义一个包含数据指针、当前长度和容量的结构体,并围绕它实现了init、push、pop等关键操作。巧妙之处在于扩容策略——当元素数量达到容量上限时,通过realloc将数组空间加倍,这种倍增策略有效平衡了频繁分配和内存浪费。作者还特别处理了内存对齐与指针迁移的细节,确保扩容后的内存连续性不受影响。 整体上,这篇文章把一个常见的数据结构拆解得清晰扎实,不仅展示了指针和内存管理的实战技巧,也体现了从底层构建可靠组件的工程思维。对于想透彻理解动态数组原理或在嵌入式等受限环境中自定义容器的开发者,这是一份非常实在的实现参考。