动态库符号导出02
这里跟原来的文章动态库符号导出一脉相承,只是补充了一些导出c++的类的最佳实践 c++里可以借助虚函数,导出的时候只要导出一个c的create当前类的实例的函数(避免name mangling), 然后通过这个函数创建实例,然后调用虚函数就可以了,外部需要知道这个抽象类的结构 使用者跟DLL提供者共用一个抽象类的头文件,使用者依赖于DLL的东西很少,只需要知道抽象类的接口,以及获取对象指...
这里跟原来的文章动态库符号导出一脉相承,只是补充了一些导出c++的类的最佳实践 c++里可以借助虚函数,导出的时候只要导出一个c的create当前类的实例的函数(避免name mangling), 然后通过这个函数创建实例,然后调用虚函数就可以了,外部需要知道这个抽象类的结构 使用者跟DLL提供者共用一个抽象类的头文件,使用者依赖于DLL的东西很少,只需要知道抽象类的接口,以及获取对象指...
实现一个language server 一个新 C++ language server 的设计与实现 c++ linking Some Of My Experience About Linking C/C++ On Linux tcpdump反查dns tcpdump 抓包卡顿分析 一次故障的诊断过程 一次故障的诊断过程 信号机制 Li...
REF A futex overview and update let’s talk about locks
这里主要讲下bind socket到ip发生了什么,还有android的bindsocket是怎么实现的 Linux linux下的bind操作在man手册上是这样解释的,其实比较无力 When a socket is created with socket(2), it exists in a name space (address family) but has no addr...
Linux中有一些标准的接口名称,这里列出了这些名称。大多数驱动程序支持多个接口,在这种情况下,接口会按照eth0和eth1这样的方式编号: lo 这是本地环回接口。它用于测试目的,以及一些网络应用程序。它就像一个闭合电路,任何写入的数据报都会立即返回到主机的网络层。内核中始终有一个环回设备存在,拥有多个似乎没有太大意义。 eth0, eth1, … 这些是Ethernet卡接口。它...
一堆leveldb的解析blog level db archive 使用 C++20 Ranges 标准库实现日历程序 使用 C++20 Ranges 标准库实现日历程序 有哪些思维透彻的历史书籍推荐? 有哪些思维透彻的历史书籍推荐? LocalStorage vs. IndexedDB vs. Cookies vs. OPFS vs. WASM-SQLi...
先抛出问题代码,下面代码的这种情况下存在一个内部指针泄露问题,伴随vector扩容,ItemManager的function内部存储的指针会指向错误的Item对象 因此,下面的这个Item类,虽然是move constructable的,但是实际上因为使用了lambda + capture了this指针,等价于将内部的this外传,item manager没有随之处理这种move的情况。 ...
准备看下asio的实现,就在win下搭建了。 准备仓库 git clone https://github.com/chriskohlhoff/asio.git 写CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(StandaloneAsioExample) set(CMAKE_CXX_STANDARD 14)...
主要是在callback之后,当前发起cb的类可能在cb之后被销毁,但是在cb之后还有一些操作需要做,这个时候要么shared_ptr来保障,要么自定义一个guard配合unique ptr的deleter做保障 void ObjectA::Do() {} if (callback) { // NOTE: this callback may destroy the curren...
逆向工程intro Reverse Engineering For Everyone! consteval & constexpr & constinit consteval & constinit c++里的ub,编译器是怎么对待UB的 浅谈 C++ Undefined Behavior circular que Non-...