Sanitizer
asan,即Address Sanitizer,是一个适用于c/c++的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错误方面都优于Valgrind。 释放后使用(use-after-free)、多次释放(double-free)、缓冲区溢出(buffer overflows)和下溢(underflows) 在生...
asan,即Address Sanitizer,是一个适用于c/c++的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错误方面都优于Valgrind。 释放后使用(use-after-free)、多次释放(double-free)、缓冲区溢出(buffer overflows)和下溢(underflows) 在生...
c++20对游戏开发友好的特性 支持了c的Designated initializers,就是strcut里.xxx=的构造方式 buffer io 了解一下buffer io time point精度损失 mac上的 飞哥写的malloc的,随便看看...
最近在开发代理相关的,从ss重温一下代理 ss是一个能骗过防火墙的网络代理工具。它把要传输的原数据经过加密后再传输给特定的relay节点,再由relay节点转发到真正的终端 firewall即不知道内容,又不知道目的地(不是封锁ip),只能放行 因此可以把ss分成两个部分 ss-local ss-local的职责是在本机启动和监听着一个服务,本地软件的网络请求都先发送到ss-loc...
主要说下模板的声明和实现分离 如果不用std::variant的话,要实现模板声明和实现分离,需要在头文件中声名,然后在cpp里定义模板,然后要继续在cpp里声明所有要用的类型 // header.h template <typename T> void show(T t); // header.cpp template <typename T> void sh...
c++20的modules, 用clang编译的话 import <iostream>; int main() { std::cout << "Hello World.\n"; } 需要预先编译成模块文件 clang++和gcc的命令看起来不太一样 clang++ -std=c++20 -xc++-system-header --precompile i...
线程到底会share哪些资源? 今天看到inet_ntoa这种函数,我记得在glibc下,稍微新一点的,都应该是线程安全的,但是在openbsd下面发现并不一定。之前游双那本书里写的放到现在不全对了。 Drepper大佬在这个commit里修了这个问题。 但是apple能找到的部分,看起来还是没有改过… c语言里有很多不想管理buffer的函数实现,返回char*, 内部就用一个st...
大多数时候自赋值的检查是没有必要的,尤其是没有使用什么裸指针类型之类的。如果你自己的类里面全部是高级的类型,没有必要自己重载operator= 但有一种情况,一个类持有一个指针,且掌控这个指针的生命周期,这时候就需要自己重载operator=,来避免自赋值的情况。 class T { int* p; public: T(const T &rhs) : p(rhs.p ? n...
动态库热加载指的是在程序运行时,动态地加载动态库,从而达到不停止程序的情况下,更新程序的功能。 C++ 程序在运行时有两种方式加载动态连接库:隐式链接和显式链接 隐式链接就是在编译的时候使用 -l 参数链接的动态库,进程在开始执行时就将动态库文件映射到内存空间中 显式链接使用libdl.so库的API接口在运行中加载和卸载动态库,主要的API有 dlo...
主要资料是mem barrier,在ref-1。 如果完整看过perfbook的话,不用再看了,paul真的是神人,RCU的作者,修了linux内核1000多个多线程bug的猛男 REF Memory Barriers: a Hardware View for Software Hackers 内存屏障Memory Barrier: a Hardwar...
mutex, spinlock, semaphore, RCU一次看一下 mutex mutex有一票比较好的文章,我这里搬运一下。 Mutex: 如果一个线程试图获取一个 mutex,但是没有成功,因为 mutex 已经被占用, 它将进入睡眠,让其他进程运行,直到 mutex 被其他进程释放. 这就意味着Mutex将使得线程睡眠,然后再通过notify唤醒它们,两者都是开销比较大的...