摘要:
背景: 前几天去面试,被问到了一个问题:“malloc的底层实现是怎样的? 怎样防止内存碎片?” 当时答的不够好,现在再整理一下。 (本文档通过收集整理网上博客而来。先挖个坑,等有时间了去看一下《深入理解操作系统》的第九章虚拟内存,再重新整理一篇) 内存布局 Linux中每个进程都有自己的虚拟地址空 阅读全文
摘要:
背景: C++ 异步调用是现代 C++ 编程中的一种重要技术,它允许程序在等待某个任务完成时继续执行其他代码,从而提高程序的效率和响应性。 C++11 引入了 std::async、std::future 和 std::promise 等工具,使得异步编程变得更加方便和直观。以下是关于 C++ 异步 阅读全文
摘要:
背景: 接触到一个很有意思的题目:如果在单例模式中返回share_ptr ??? static std::shared_ptr<Singleton> getInstance() ; 分析: 这个问题的难点在于如果要实现单例,那么一定要把构造函数变成私有的,但是make_shared一定是调用的pub 阅读全文
摘要:
题目: 有一个游戏中的三维地图,是由i,j,k三个轴组成的三维网络。每个立方体由不同的种类代表,比如空气,水,沙子,泥土。地图上方的空气方块,不会经常变动且数量占大多数,下方是各种类型的方块,会经常相互转换(水变沙子,沙子变泥土等)。 问题:请你实现一个存储该地图的方案(地图方块和对应类型)。要求: 阅读全文
摘要:
背景: 想着自己实现一个好看一点的按钮,切换时加一点动画。也算巩固一下Qt的基本知识。 基本环境: 主要用到的类有: QBrush:画刷,主要是画一些颜色啥的。 QPainter:画笔,可以画形状。比如带弧形的矩形,圆形,写字等。 QPropertyAnimation:动画相关。 关键逻辑: 重载p 阅读全文
摘要:
前几天在B站上看到一个线程池的例子,用到了很多不熟的语法,于是把它记录下来,方便后续慢慢研究。 在windows下用vs2017编译测试过,C++14和C++17都能跑通。 直接上代码: ThreadPool.hpp: #ifndef __MY_THREAD_POOL_INCLUDE__ #defi 阅读全文
摘要:
C++标准库对条件变量有两套实现:std::condition_variable 和 std::condition_variable_any 。 这两个实现都包含在 <condition_variable> 头文件的声明中。 两者都需要与一个互斥量一起才能工作(互斥量是为了同步); 前者仅限于与 s 阅读全文
摘要:
背景: share_ptr已经很好用了,但是有一点share_ptr智能指针还是有内存泄露的情况,当两个对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。 weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 阅读全文
摘要:
记录一些C++14的一些特性: 参考:https://github.com/0voice/cpp_new_features/blob/main/cpp_14/001_initializer_list_crbegin.cpp 函数返回值类型推导: C++14对函数返回类型推导规则做了优化: #incl 阅读全文
摘要:
记录一下使用过的C++11的一些特性,大致分为三部分:并发相关,智能指针相关,chrono。 并发相关: std::thread相关: #include <iostream> #include <thread> using namespace std; int main() { auto func 阅读全文