随笔分类 - C++
有关C++中的常见问题
摘要:在类中的使用案例: #include <iostream> class Method; // forward declaration class MethodPtr { public: void (Method::*func)() = nullptr; }; class Method { publi
阅读全文
摘要:这是一个很久之前的问题了,今天记录一下,以便遇到同样问题的同学能够看到此文章 崩溃环境: 目前仅收到 windows 7 的部分用户反馈,在程序启动时发生闪退 问题分析: 查看用户提供的日志,可以看见崩溃发生在 sentry 内部 堆栈显示,在加载 sentry_get_modules_list 时
阅读全文
摘要:有用户反馈启动程序时,没有出现 UI 界面,程序跟 “闪退了一样”,查看日志,没有发现闪退或者报错异常,后面远程用户电脑并尝试解决 研究分析:在用户电脑上运行 debug 包,会出现 qt.qpa.fonts:Unable to enumerate family... 错误 初步怀疑是 window
阅读全文
摘要:场景: x86 的项目在 x64 的 windows 机器上运行时出现未响应的情况,使用任务管理器创建该进程的转储文件 因为项目是 32 位的,所以使用 x86 的 windbg 来调试 dmp 文件,使用 kn 列出堆栈信息,出现了一些与项目代码无关的函数调用 后面研究发现,这个调用都是 wow6
阅读全文
摘要:如标题所说,在 VS 编译器中调用 Qt 库 首先安装一个适合 VS 的 Qt 版本 不知道怎么安装的,可以参考:Visual Studio+Qt配置开发环境 Qt 安装之后,需要在 VS 编译器中安装 Qt VS Tools 拓展,以便在 vs 中新建 C++/Qt 项目 不知道如何安装的,可以参
阅读全文
摘要:vecotr 容器中插入多条字符串,再将 vector 的地址转换为 char** 代码如下: #include <stdio.h> #include <string> #include <vector> int main() { std::vector<std::string> url_vecto
阅读全文
摘要:单例模式(Singleton)也称为单件模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI 应用必须是单鼠标,操作系统只会弹出一个任务管理器等。 在我们的项目中使用了 Chrome 提供的 base::
阅读全文
摘要:源自 stackoverflow 论坛,很有意义 第一个问题,引用传递和按值传递的场合 There are four main cases where you should use pass-by-reference over pass-by-value: If you are calling a
阅读全文
摘要:在开发新项目时需要用到一些三方 API,这些三方 API 没有生成 lib,所以我们在 VS 编译器中添加这些三方文件夹的头文件路径后 会出现 ERROR LNK2019 的错误提示,这些提示通常都是外部文件缺少库文件导致的,以往我们只需要在链接器的选项中添加三方库的路径即可 但是在这个问题中,我们
阅读全文
摘要:在开发一个新项目时,发现每次编译时都会产生一些 .obj 无用的文件,这些文件并不需要 push 到 github 上 故使用 .gitignore 忽略这些文件 首先,我们可以设置这些文件的输出目录,比如建一个 temp 的中间目录 然后在本地新建一个 .gitignore 文件 在其中写入 te
阅读全文
摘要:有用户反馈使用我们的软件时会出现 ERR_CONNECTION_CLOSED 问题 我们根据反馈排查问题发现是软件的 websocket 监听端口被另一款软件占用了,暂时的解决方法是将占用的软件关闭 可以通过命令行窗口输入 netstat -ano|findstr "9002" 其中,9002 是端
阅读全文
摘要:进程的内存映像是指内核在内存中如何存放可执行程序文件。 在将程序转化为进程的过程中,操作系统将可执行程序由硬盘复制到内存。 可执行程序和内存映像的区别 可执行程序位于磁盘中而内存映像位于内存中; 可执行程序没有堆栈,因为程序被加载到内存中才会分配堆栈; 可执行程序虽然也有未初始化数据段但它并不被储存
阅读全文
摘要:std::vector<std::string> SplitStringBySpace(std::string strs) { std::vector<std::string> vector_str; if (strs.empty()) { return vector_str; } boost::t
阅读全文
摘要:项目中在使用 sentry 上传事件的 attachment 函数过程中发现,附带的 log 文件是未压缩的,于是有了需求,即需要在 sentry 内部将未压缩的文件流压缩后再上传给服务器 这个需求看似挺简单的,其实过程挺坎坷的,因为要看 sentry 的源码,并对 zlib 的库有一定的了解才行。
阅读全文