
C/C++
文章平均质量分 86
ArthurBreeze
积微尘以成山,聚细流而成海。
https://github.com/zchrissirhcz
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CPU眼里的C/C++: 1.3 汇编级单步调试函数执行过程
【代码】CPU眼里的C/C++: 1.3 汇编级单步调试函数执行过程。原创 2023-10-24 23:44:44 · 687 阅读 · 0 评论 -
CPU眼里的C/C++:1.2 查看变量和函数在内存中的存储位置
对应的内存地址,按从高到低,顺如如下(不同的GLIBC版本,得到的具体值会有差异,但是整体趋势是固定的:stack地址从高往低增长(🔽), .text 和 .data 在地址比较低的地方, heap 则从地址较低的地方往地址较高的地方增长(🔼)写一个很简单的 c++ 代码,打印一些“地址”, 也就是变量、函数的“存储位置”:当程序被加载到内存后,它们具体是存在哪里,可以用精确的数值来表示,这就是内存地址。原创 2023-10-24 23:05:07 · 1764 阅读 · 0 评论 -
CPU眼里的C/C++: 1.1 查看汇编代码的工具
手头有C/C++源代码,想查看对应的汇编代码。原创 2023-10-23 23:35:53 · 1476 阅读 · 0 评论 -
源码阅读: expand 制表符展开程序
研读 netbsd 9.3 中的 expand.c 的源码,分析其对于tab字符的展开流程。最终给出了一个精简版的实现。原创 2023-07-15 14:53:42 · 257 阅读 · 0 评论 -
源码阅读: echo 回显程序
netbsd 9.3 echo.c 代码走读原创 2023-07-15 10:24:43 · 254 阅读 · 0 评论 -
scratch lenet(12): LeNet-5输出层和损失函数的计算
研读LeNet-5原版论文LeCun-98.pdf,理解损失函数的每一项,并用C语言实现。原创 2023-06-24 18:05:27 · 1163 阅读 · 1 评论 -
scratch lenet(11): C语言实现 squashing function
研读LeCun98.pdf原文中关于 squashing function 的表述,并用C语言实现。原创 2023-06-24 17:34:00 · 355 阅读 · 0 评论 -
scratch lenet(10): C语言计算log
简要分析自然对数 log(x) 的近似计算的数学原理,包括IEEE-754二进制表示,log运算公式的运用,Remez算法等,并基于C语言给出快速 log(x) 的实现。原创 2023-06-24 15:40:18 · 550 阅读 · 0 评论 -
scratch lenet(9): C语言实现tanh的计算
使用C语言实现双曲正切三角函数tanh,包括定义式、高斯连分数式等。原创 2023-06-22 23:58:56 · 1084 阅读 · 6 评论 -
scratch lenet(8): C语言实现 exp(x) 的计算
用C语言实现指数函数exp(x),包括泰勒展开公式,转为2的幂次的快速计算,查表法等。原创 2023-06-22 22:30:48 · 2516 阅读 · 0 评论 -
scratch lenet(7): C语言计算可学习参数数量和连接数量
复现原版LeNet-5的每层trainable paramter数量、connection数量,用C语言实现。结果和原文完全对齐。原创 2023-06-22 15:42:07 · 768 阅读 · 0 评论 -
scratch lenet(6): feature_map可视化的C语言实现
将神经网络每层算出的feature map归一化到[0,255]区间,并保存为.pgm图像,得到可视化结果,也可用于Debug时提供灵感。C语言实现,不依赖任何第三方库。原创 2023-06-18 16:38:54 · 451 阅读 · 0 评论 -
scratch lenet(5): 快速生成随机数的C语言实现
使用C语言生成随机数,不使用外部依赖库。用于lenet网络权值初始化。原创 2023-06-18 12:57:27 · 662 阅读 · 0 评论 -
scratch lenet(4): 开根号的C语言实现
使用C语言,分别使用二分法、牛顿法、卡马克快速法,求解正实数的开根号。包括公式推导、代码实现、运行结果,不使用任何第三方库和C标准库的数学库。原创 2023-06-18 12:16:01 · 4655 阅读 · 0 评论 -
scratch lenet(3): 直方图均衡化的C语言实现
使用C语言实现直方图均衡化,并基于.pgm格式的单通道灰度图进行验证,比对原图和均衡化后的图像,比对原图的直方图和均衡化后的直方图。原创 2023-06-17 20:45:50 · 1133 阅读 · 0 评论 -
scratch lenet(2): C语言实现图像直方图的计算
用C语言实现单通道灰度图像的直方图计算。原创 2023-06-17 18:46:50 · 790 阅读 · 0 评论 -
scratch lenet(1): 读写 pgm 图像文件
C语言读写.pgm图像原创 2023-06-17 18:23:12 · 1320 阅读 · 0 评论 -
Cracking C++(12): 实现 memset
C语言标准库函数memset的naive实现。原创 2023-06-17 16:28:30 · 524 阅读 · 0 评论 -
Cracking C++(11): CMake代码高亮调研
CMake是C++项目的主流构建系统,也越来越成为C++工程师的必备技能,阅读和编写CMake代码时,正确、舒服的CMake语法高亮会提升使用体验,本文给出合适的选择。原创 2023-06-13 00:30:26 · 636 阅读 · 0 评论 -
Cracking C++(10): 基本的输入输出流
C++的std::cin, std::cout, std::cerr, std::clog 的简单介绍, 以及通过输出结果直观理解是否写入缓冲区的差别。原创 2023-06-12 00:01:19 · 370 阅读 · 0 评论 -
Cracking C++(9): 编译选项的设置
使用 overlook.cmake 来为你的 C++ 工程的安全性保驾护航!原创 2023-06-11 23:14:30 · 852 阅读 · 0 评论 -
Cracking C++(8): 开发环境的选择
hackingcpp 作者推荐的 C++ 开发环境原创 2023-06-11 22:52:17 · 862 阅读 · 0 评论 -
Cracking C++(7): 使用 fp16 类型
fp16 类型主要作用是计算加速, 在使用 CPU 执行计算的平台上, x86 硬件并没有原生支持 fp16, 但是网络上可以找到模拟实现, 可以初步体验下 fp16 类型的基本计算。如果写好的程序打算迁移到支持 fp16 的设备上运行, 用上述两个模拟库无法享受硬件相关的 SIMD 指令加速。不过, 从头实现是耗时且困难的, 参考 half 和 FP16 两个库的实现则可以提供适当加速, 原生 fp16 类型的使用则可参照。使用前一步封装好的 FP16 类, 执行标量、 数组的计算。原创 2023-06-11 10:59:22 · 4339 阅读 · 0 评论 -
Cracking C++(6): 准确打印浮点数
使用 fmtlib 准确打印浮点数, 使用C++模拟实现IEEE754浮点数的求值过程。原创 2023-06-10 04:36:54 · 1907 阅读 · 0 评论 -
Cracking C++(5):cout打印到文件
掌控std::cout: 既可以输出到控制台,也可以输出到文件,还可以来回切换。原创 2023-06-07 22:12:19 · 1092 阅读 · 0 评论 -
Cracking C++(4):头文件不能使用using namespace std吗?
讨论在C++头文件中使用 using namespace 的合适方式。原创 2023-06-07 21:12:15 · 1242 阅读 · 0 评论 -
Cracking C++(3):解决VS中文编码warning C4819和控制台输出乱码问题
解决VS C++代码中含有中文时,编译警告和运行输出乱码的问题。原创 2023-06-07 11:29:35 · 1387 阅读 · 0 评论 -
Cracking C++(2): 编译期查询编译器支持的C++标准
检查当前C++编译器支持的C++标准。跨平台,编译期判断。原创 2023-06-07 00:16:35 · 868 阅读 · 0 评论 -
Cracking C++(1): 头文件包含
C++ HelloWorld的头文件包含浅析。原创 2023-06-06 23:11:45 · 392 阅读 · 0 评论 -
doxygen使用: 跨平台方式让markdown文件包含另一个文件
使用Python实现简易版的C预处理器,跨平台方式支持了markdown文件包含另一个文件,从而生成预期的html文档网页原创 2023-05-30 11:23:17 · 1107 阅读 · 0 评论 -
pthread多线程:传入参数并检查 data race
使用 pthread 创建子线程时,传入有效参数,并介绍 data race 的概念和检测方法, 以及简单的消除的 data race 的方法。原创 2023-05-28 00:33:26 · 1264 阅读 · 0 评论 -
pthread多线程: 线程泄漏的检测
解释线程泄漏的概念,给出用ThreadSanitizer检查线程泄漏的步骤,给出用Pthread的API构造线程泄漏、修复线程泄漏的两种方法的示例代码。原创 2023-05-23 23:53:59 · 1071 阅读 · 1 评论 -
pthread多线程: 创建最简单的线程
学习使用Pthread的原因分析,以及使用Pthread创建最简单的线程。原创 2023-05-23 00:26:44 · 1082 阅读 · 0 评论 -
Doxygen 源码分析: Definition类
分析doxygen1.9.8版本中的Definition类,包括它的子类和它的继承关系,以及Definition类的成员函数的介绍。对于后续具体的Defitinion子类的介绍和使用打下基础。原创 2023-05-21 14:50:50 · 806 阅读 · 0 评论 -
Doxygen 源码分析: SymbolMap类
解读开源项目doxygen1.9.8版本中的SymbolMap类,从定义到使用,并延伸到Definition类的使用。原创 2023-05-21 13:03:14 · 662 阅读 · 0 评论 -
Doxygen 源码分析: QCString类
分析doxygen源码中的QCString类的实现,它使用了C++11以来的特性,比较现代。原创 2023-05-21 00:59:43 · 837 阅读 · 0 评论 -
Doxygen源码分析: QCString类依赖的qstr系列C函数浅析
doxygen源代码中qstr系列C函数的解读。这些函数构成了后续QCString类成员函数实现的基础。解读过程中发现有bug,尝试给出了更合理的实现。原创 2023-05-20 20:34:06 · 943 阅读 · 0 评论 -
Doxygen源码分析:doxygen执行过程的拆解
doxygen可执行程序执行过程的源码浅析。原创 2023-05-20 16:48:13 · 1459 阅读 · 0 评论 -
Doxygen源码分析: 根目录文件简要介绍
逐一介绍Doxygen源码工程中,目录深度为1的文件的内容。原创 2023-05-18 23:56:13 · 552 阅读 · 0 评论 -
Python3: 扫描库文件并获取版本号信息
用Python实现strings命令,并用于二进制库文件中版本号字符串的查询。Python3,跨平台(Windows,Linux),无第三方依赖,一句话调用,简单实用~原创 2023-05-16 00:03:51 · 665 阅读 · 0 评论