使 memcpy(NULL, NULL, 0) 行为明确定义
C语言标准C2y接受了N3322提案,将移除memcpy(NULL, NULL, 0)、memcmp(NULL, NULL, 0)等零长度操作的未定义行为,使其行为明确定义。这有助于消除潜在的安全漏洞和编译器过度优化带来的问题,并简化代码编写。文章还探讨了空指针运算的定义,以及提案在标准化过程中遇到的争议和最终获得的支持。
阅读更多
C语言标准C2y接受了N3322提案,将移除memcpy(NULL, NULL, 0)、memcmp(NULL, NULL, 0)等零长度操作的未定义行为,使其行为明确定义。这有助于消除潜在的安全漏洞和编译器过度优化带来的问题,并简化代码编写。文章还探讨了空指针运算的定义,以及提案在标准化过程中遇到的争议和最终获得的支持。
阅读更多
本文深入研究了Go编译器中鲜为人知的寄存器分配(RA)机制。Go RA采用基于SSA的局部寄存器分配策略,并进行了一些全局优化。文章详细介绍了其工作原理、关键组件、数据结构和算法,并分析了其优缺点,包括快速、堆栈槽共享良好,但也存在全局视图不足、SSA处理复杂等问题。
阅读更多
这篇文章介绍了 GCC 中支持的一种新的防御级别。这个新级别可以检测到更多的缓冲区溢出和错误,从而在运行时减少应用程序中的安全问题。GCC 12 中一个名为 `__builtin_dynamic_object_size` 的新内置程序是这个新防御级别的基础,它比之前在 `_FORTIFY_SOURCE=2` 中使用的 `__builtin_object_size` 内置程序更加强大。文章进一步讨论了增强后的安全防御带来的两大收益:增强的缓冲区大小检测和更好的防御覆盖范围,并用具体的代码示例和案例分析进行了说明。
阅读更多
这篇文章是关于红帽 Shenandoah 垃圾收集器的介绍,涵盖了其基本功能、用例、垃圾收集 (GC) 日志记录和基本故障排除。Shenandoah 是一个高性能、低停顿时间的垃圾收集器,采用并发、基于位置的 GC 算法,不基于分代。它以 3 个或 2 个并发阶段运行,目标是将停顿时间控制在 10 毫秒以内。文章还讨论了 Shenandoah 与 G1GC 的比较、何时使用 Shenandoah 以及何时不使用 Shenandoah。
阅读更多