C++Tips
    此条为私密说说,仅发布者可见

    C++Tips 一个“暴论”:大部分的c++业务代码里使用模版或者宏除了炫技和增加阅读成本外没有任何好处。

    C++Tips

    一个可能会被搞错的运算符例子,下面这个代码输出的结果不是true,而是false

    true || false? false:true;

    三目运算符简洁但是非常容易出错。这里的代码等价如下,有的时候可能被直觉搞错

    (true || false)? false:true;

    C++Tips Google C++ Style 关于输出参数在2020年5月20号 以及之前推荐使用指针:

    Input parameters are usually values or const references, while output and input/output parameters will be pointers to non-const.

    而在之后,则修改规范推荐使用了引用:

    Input parameters should usually be values or const references, while required (non-nullable) output and input/output parameters should usually be references

    个人认为指针作为输出参数更明确语意,如果使用引用参数,程序员可能漏写了const,从而输入参数被误认为是输出参数。

    但是可能这不是一个好的理由,因为这是程序员自身的错误,同时传递指针需要内部判空使用有些麻烦。

    💼 工作记录

        std::string origin_response_body = "test_content";
        const int body_len = origin_response_body.length();
        std::unique_ptr<char[]> response_body(new char[body_len]);
        memcpy(response_body.get(), origin_response_body.c_str(), body_len);
        std::string body = response_body.get(); 

    这段代码是有隐患的,但是却比较难发现。因为如果这个数组中最后一位不是\0 结束符,构造string的过程中就会一直按照地址递增访问内存直到找到结束符为止,这个过程会导致内存异常访问等问题

    但在真实环境中,可能不一定会导致崩溃,因为当我们new[body_len] 申请一段内存的时候,由于内存对齐以及操作系统的差异性,分配的大小会大于申请的大小,因此在body_len 位置的内存很可能就是结束符。 C++Tips

    周五下午 本来是团建 我没去 开开心心回家了 本来准备享受者加长版周末,下午就有一个崩溃问题抛过来要查,而且看上去很高优的样子。是访问map中的一个空指针或者野指针问题。 从日志上看 每次添加元素到map以及从map中移除的日志都是对应的。怎么也想不通为什么会崩溃。而且复现路径要配置环境 很麻烦。一下午看了日志 没有任何头绪。晚上把环境配好,加日志 断点调试。前前后后又折腾了四个小时 最终定位到原因是 map中移除元素 进入了这个元素的析构函数,而这个元素的析构函数又操作了这个map中元素, map erase的时候这个元素在map中会变成空的指针,因此就崩溃了…. 这个问题其实很容易犯,并且很难查。因此从map中移除一个unique ptr元素,最好先把这个unique ptr从map元素中移除,然后再销毁指针. C++Tips

联系方式

关于我

  • 来自南部的一个小城市,个性不张扬,讨厌随波逐流。

那年今日

🥳 周末 [WEEK-05] 这周只休息一天,即使只上班了4天,但是仍然觉得一周休一天实在是不够啊!🎬 电影 晚上看了《和莎莫的500天》,是deepseek推荐的:)看之前我以为是男主和女主...

💼 工作记录 今天要修复一个之前写业务代码模块时候的一个bug,已经好几个月没写太多业务代码了。这让我回想起写业务代码有写业务的挣扎。新增或者修改一个接口经常要想很久,尤其设计了很多业务特化点的...

💬 随便聊聊 以前吃饭的时候会看一下解读娱乐圈的视频,比如哪个明星又怎么样出丑了,或者装B了...看看乐子。现在再去看这种逐帧的剖析剪辑后的视频,总感觉不舒服。当根据某几帧画面就去给一个人定罪,...

💬 分享 vscode一直使用的都是深色主题。最近上午显示器因为光线太亮了,黑色看不太清,改用了浅色主题「Solarized Light」,不刺眼,而且颜色很柔和浅黄色,很喜欢,推荐!

📝 每日记录 【忙碌的端午】可能是最近一段时间最忙的一个节日了。端午节,我姐婚礼,我当伴郎🤵。还有另外三个伴郎都是姐夫的同学,我和他们完全不熟的!不过幸好的是他们人都超级好,其中还借给我皮鞋穿。...