logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

从文件描述符到文件偏移量:用 Linux 系统调用完成一次文件读写

本文介绍了如何使用 Linux 系统调用完成文件读写操作。相比标准库函数 fopen()/fread()/fwrite(),直接使用 open()/read()/write() 等系统调用更接近操作系统底层。文章详细讲解了文件描述符的概念,以及如何通过 open() 获取文件描述符,使用 write() 写入数据,通过 lseek() 调整文件偏移量,再用 read() 读取内容。整个过程展现了

#linux#驱动开发#c语言 +3
从简单析构到析构链:C 语言里对象内部资源的释放顺序

本文探讨了C语言中对象内部资源的释放顺序问题。作者通过一个Dog类的例子,展示了当对象包含额外分配的成员资源(如foodName)时,简单的free操作会导致内存泄漏。文章提出了"析构链"概念,将销毁过程拆分为cleanUp(释放成员资源)和release(释放对象本体)两个阶段,并由抽象层统一管理销毁顺序。通过引入container_of宏和虚表机制,实现了类型安全的资源释放,确保先释放内部资源

#c语言#开发语言#学习 +2
从多态调用到简单析构:C 语言里的对象生命周期管理

本文探讨了在C语言中如何实现对象生命周期的多态管理。通过扩展虚表(vtable)机制,新增destroy函数指针,实现了从基类指针安全释放完整对象的能力。关键点在于利用container_of宏从基类成员指针找回原始对象地址,确保正确释放malloc分配的内存。文章展示了如何将对象创建、行为调用和销毁过程统一抽象化,调用端只需操作基类指针即可完成完整生命周期管理。当前方案解决了基础析构问题,但尚未

#c语言#算法#开发语言
从首成员基类到 container_of:C 语言里的封装抽象再进一步

C 语言通过结构体和函数指针表模拟面向对象特性。本章改进封装机制,不再依赖基类必须作为结构体首成员,而是使用 container_of 宏根据成员地址反推外层对象地址。当 Animal base 不再是 struct Cat 的首成员时,强制类型转换会导致未定义行为。container_of 宏通过计算成员偏移量,将 Animal* 正确转换为 Cat*,使具体类型可以自由添加私有状态而不影响抽象

#c语言#开发语言#学习
用结构体和函数指针实现封装、抽象与多态:C 语言中的函数表

C 语言通过结构体和函数指针实现面向对象特性 摘要:本文展示如何在 C 语言中模拟面向对象编程的核心概念。通过 Animal/Cat/Dog 模型,利用结构体保存公共数据,函数指针表描述抽象行为。具体类型在自己的实现文件中提供函数表,调用端通过抽象接口调用行为,由运行时对象内部的函数表决定实际执行的函数。这种设计实现了封装(不透明类型)、抽象(统一接口)和多态(运行时绑定)等面向对象特性,展示了

#c语言#开发语言#学习
到底了