
空指针
typeid不能安全用于未定义行为表达式或非多态类型地址比较;应优先用dynamic_cast替代,因其更安全、语义清晰且支持空指针检查。
二叉树高度按节点数定义,递归解法为:空节点返回0,否则返回左右子树最大高度加1;非递归用BFS按层计数;注意避免重复计算、段错误及定义混淆。
简化版variant是轻量级type-erasedholder,支持有限类型集合的存储与安全取值;其核心由void*存储、type_info类型标识和虚函数管理生命周期三要素构成,不追求完全兼容std...
TinyXML-2解析XML只需三步:加载文档、定位节点、提取数据;支持文件/字符串加载,通过FirstChildElement和Attribute等接口遍历元素与属性,注意空指针检查、UTF-8编码...
Go编译器在编译期严格检查语法和类型,拦截括号缺失、返回值不匹配、未使用变量/导入、重复字段、非导出标识符访问及隐式类型转换等错误,但不检查运行时panic、死代码、竞态、安全漏洞等。
Go的error接口设计天然支持解耦,通过行为契约而非具体实现实现模块间松耦合;自定义错误应包装底层错误、避免裸指针比较、结构化字段需封装访问;errors.As应限于边界层且封装为语义化函数;pan...
Go函数参数是值传递,需传指针才能交换变量:swap(a,bint){a,b=b,a},调用时用&取地址;泛型版Swap[Tany](a,bT)支持任意类型,注意避免nil指针和同一地址交换。
初始化Producer时需用RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL)创建全局配置,正确设置"bootstrap.servers&qu...
Go1.13起应使用fmt.Errorf搭配%w动词包装错误以保留原始错误类型和堆栈,避免用%s拼接导致errors.Is/As失效;多错误并行失败用errors.Join聚合;需定位源头时可结合ru...
GoWeb应用需通过中间件+defer-recover捕获handlerpanic,记录带request_id的结构化日志,返回统一错误响应(code/message/request_id/times...