https://cdn.jsdelivr.net/gh/caibingcheng/resources@main/images/2B2pd1.png

BBing's Blog

自由 分享 合作

explicit说明符

一直对explicit的认知比较模糊, 在准备智能指针内容的时候, 看到了这个内容, 所以索性认认真真学习一遍.

简单来说, explicit表达的是: 只允许显示行为, 不允许隐式行为.

要理解上面的解释, 就需要理解哪些是C++的显示行为, 哪些是隐式行为.


pair的内存结构

问题

在提交代码的时候发现了代码中的一个问题:

大概意思是, 有一个pair类型的数据, 使用如下方式打印了pairfirst的数据(实际上是代码写错了, 但是依然正常工作):

1
2
3
using ps = pair<uint64, float>;
ps p1(1, 1.1111);
printf("%p\n", p1);

编译是正常的, 这时候怀疑打印的结果是不是正常的呢?


使用Docker模拟软件运行环境

问题

《使用Docker构建不同平台编译环境》中, 模拟了不同系统平台的编译环境, 使得我们可以在某一个系统平台编译其他系统平台的内容.

最近遇到一个问题: 从AOSP拿到的heap_trace工具是使用glibc2.28及以上库编译的, 我本地的机器是ubuntu18.04, 使用的是2.27版本, 所以不兼容heap_trace工具. 但是查到ubuntu20.04更新了glibc版本, 然后想到了使用docker模拟ubuntu20.04环境.