C++ 中如何正确使用 delete 运算符

`delete` 是 C++ 动态内存管理里最容易写对、也最容易埋雷的基础操作。本文从 `delete` 与 `delete[]` 的区别讲起,再梳理栈、堆和智能指针的适用场景,最后总结安全释放内存时最常见的错误与更稳妥的现代 C++ 写法。

C++ 中如何正确使用 delete 运算符

如何抑制不需要的编译器消息

C++ 编译器警告不该一股脑全部关掉,也不必被海量提示牵着走。本文从警告的类型与作用讲起,梳理 GCC、Clang、MSVC 中常见的抑制手段,并给出更稳妥的判断原则:什么时候该修代码,什么时候才适合定向关闭警告。

如何抑制不需要的编译器消息

如何解决 C++ 多重定义错误

多重定义错误本质上是链接阶段发现“同一个符号被定义了不止一次”。这类问题常见于头文件里直接写定义、多个源文件重复实现同名函数,或模板与内联函数使用不当。梳理触发场景、诊断线索和修复手法后,定位与处理都会快很多。

如何解决 C++ 多重定义错误

如何排查常见的 C++ 编译错误

这篇文章按“先分类、再定位、后修复”的顺序梳理 C++ 编译错误排查方法,覆盖语法错误、语义错误、链接器错误以及警告处理。文中保留常用 `g++` 命令、示例代码和调试工具,帮助你更快判断问题出在语法、类型还是链接阶段。

如何排查常见的 C++ 编译错误

C++ 如何传递数组参数:从原生数组到 `std::vector` 的选择方法

这篇文章围绕 C++ 中“数组该怎么传给函数”展开,梳理了原生数组、指针、引用、`std::array` 与 `std::vector` 的适用场景,并补充了内存分配和性能取舍。读完可以快速判断:什么时候必须显式传大小,什么时候该换成更安全的现代容器。

C++ 如何传递数组参数:从原生数组到 `std::vector` 的选择方法

如何安全地使用 C++ 关联式容器

这篇文章围绕 C++ 关联式容器的实际使用场景,梳理了 `map`、`set` 及无序容器的选型依据,并总结查找、插入、迭代、并发访问和异常处理中的常见风险。读完后,你可以更稳妥地决定该用哪种容器,以及怎样把代码写得更安全。

如何安全地使用 C++ 关联式容器

如何简化嵌套条件逻辑:从提前返回到多态重构

这篇文章围绕 C++ 中常见的嵌套条件问题,梳理了判断复杂度的信号,以及提前返回、保护子句、函数分解、多态与状态模式等几类常见重构方法。保留原有代码示例的基础上,重点说明什么时候该改、该用哪种方式改,以及改完后如何兼顾可读性、可维护性与性能。

如何简化嵌套条件逻辑:从提前返回到多态重构

如何解决 C++ 主函数编译错误

本文围绕 C++ `main()` 函数的常见编译错误展开,梳理合法签名、典型报错类型、Ubuntu 22.04 下的调试命令和逐步排查方法。读完后,你可以快速判断问题出在签名、返回值、重复定义还是基础语法。 遇到 `main()` 编译报错时,很多人会先盯着某一行代码反复修改,但真正高效的做法,是先确认主函数是否满足 C++ 的标准要求,再根据报。

如何解决 C++ 主函数编译错误