
c/c++
文章平均质量分 58
kevin_darkelf
这个作者很懒,什么都没留下…
展开
-
malloc in signal handler causes deadlock
【代码】malloc in signal handler causes deadloc。原创 2024-02-12 11:41:27 · 493 阅读 · 0 评论 -
thread local
REFC++11 thread_local 用法C++ Storage class specifiers原创 2021-12-31 13:51:01 · 420 阅读 · 0 评论 -
覆盖率coverage
cpp 覆盖率optionscompile: -fprofile-arcs, -ftest-coveragelink: -lgcov或者:compile: --coveragelink: --coverage详情参见:https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Instrumentation-Options.html编译完后会产生*.gcno, *.gcda 文件lcov用lcov 收集数据## *.gc?? 数据在gcda_原创 2021-10-07 11:19:40 · 348 阅读 · 0 评论 -
rscocket
官网https://rsocket.io/exampleC++server: // RSocket server accepting on TCP auto rs = RSocket::createServer(TcpConnectionAcceptor::create(FLAGS_port)); // global request handler auto handler = std::make_shared<HelloStreamRequestHandler>原创 2021-03-19 14:38:18 · 189 阅读 · 0 评论 -
c++重载 operator ->
重载 -> 运算符示例如下不能是静态函数返回 T的指针,再调用T-><type T>class Pointer{ Pointer(const T* t) : _target(t) T * operator ->() { return _target } T* _target;};This is the only really tricky one. It must be a nonstatic member function, an原创 2021-01-03 15:33:45 · 273 阅读 · 0 评论 -
portable binary
原文地址要翻墙,就复制到下面Creating portable Linux binariesPosted by insane coder at Thursday, July 19, 2012For some, the idea of creating a portable Linux binary is somewhat elusive.In this article, we will be discussing how to create a Linux binary for a speci原创 2020-08-07 15:44:53 · 241 阅读 · 0 评论 -
Resource acquisition is initialization 初始时获取资源
RAII概念Resource acquisition is initialization: (通过对象) 初始化时就获取资源(,销毁时释放资源)是一种代码编写思想, 通用对象的生命周期来对资源进行管理。好处典型场景refhttps://en.wikipedia.org/wiki/Resource_acquisition_is_initialization...原创 2020-07-09 11:28:04 · 239 阅读 · 0 评论 -
odb
https://www.codesynthesis.com/products/odb/原创 2019-07-01 19:51:12 · 328 阅读 · 0 评论 -
c++版本判断
c++ 版本如何在代码中判断c++版本使用 __cplusplus#include <string> #include <iostream> using namespace std;int main(int argc, char** argv){ cout << __GNUC__ << endl; cout <&l...原创 2018-12-06 11:18:33 · 15372 阅读 · 0 评论 -
c++调用python
https://docs.python.org/3/extending/index.html原创 2018-07-20 13:46:26 · 423 阅读 · 0 评论 -
linux 动态库运行时加载
动态加载覆盖旧库动态加载覆盖旧库一个程序mybin 运行时加载了 a.so, 如果 直接cp 新a.so 覆盖a.so 会导致mybin crash 因为: TODO 正确做法: install 新a.so a.so...原创 2018-07-07 17:43:34 · 2274 阅读 · 0 评论 -
各种Hash函数和代码
ref: http://www.cppblog.com/bellgrade/archive/2009/09/29/97565.html --------常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKD转载 2018-03-28 11:25:53 · 2001 阅读 · 1 评论 -
gcc/g++ flags
gccg flagslink flagsreferencesgcc/g++ flags-c 只编译源文件,不链接 -nostdinc, -nostdinc++ -nostdinc ignores standard C include directories -nostdinc++ ignores standard C++ include directo原创 2018-01-31 23:16:03 · 1346 阅读 · 0 评论 -
C++ Thread Local Storage
Quote From : http://ju.outofmemory.cn/entry/66238 我查阅了相关的资料, 发现线程局部存储(TLS)是一个后来者, 产生于多线程概念之后.而在软件发展的早期, 全局变量经常用在库函数中, 用于存储全局信息, 比如errno, 多线程程序产生之后, 全局变量errno就成为所有线程都共享的一个变量, 而实际上, 每个原创 2017-10-24 16:07:02 · 4125 阅读 · 0 评论 -
std::thread
definitionstd::stread::thread thread() noexcept; (1) (since C++11)thread( thread&& other ) noexcept; (2) (since C++11)template< class Function, class... Args > explicit thread( Function&原创 2017-10-10 14:53:52 · 416 阅读 · 0 评论 -
c++ logging spdlog
号称是最快的loggingspdlog : https://github.com/gabime/spdlog原创 2019-07-02 19:56:23 · 473 阅读 · 0 评论 -
Linux共享内存IPC
RefLinux\Unix IPC进程通信实例分析(一):共享内存通信—文件映射mmap方式 https://blog.csdn.net/lzx_bupt/article/details/7658371Linux 进程间通信(IPC)之共享内存详解与测试用例 https://blog.csdn.net/a1414345/article/details/69389647mmap 与 shm的...原创 2019-07-09 20:16:14 · 209 阅读 · 0 评论 -
头文件依赖pimpl法
头文件依赖,Pimpl法,加速编译 举个例子: // File: SoundSystem.h #include "StreamFilter.h" #include "Emitters." class SoundSystem { public: // ... private:转载 2013-02-02 17:08:22 · 515 阅读 · 0 评论 -
C/C++程序运行时进程的内存分布情况
from:https://www.linuxidc.com/Linux/2017-02/141094.htm1.典型的内存分布情况:2.各段相关说明:代码段[.text]: 存储机器码序列/全局常量/代码/字符串常量. 初始化数据段: 初始化的全局变量/初始化的(局部/全局)静态变量(static修饰的变量)。 未初始化数据段[.bbs]: 未初始化的全局变量/未初始化的(局...转载 2019-08-22 20:11:27 · 1388 阅读 · 0 评论 -
设计问题
可执行程序的路径调度器为了解决机器上应用app的版本问题,会把 app的目录做一个软链接,把真正的目录放在其它地方, 如:[admin@worker] $ pwd /home/admin/workers/apps/biz_online ...原创 2019-08-01 15:47:18 · 210 阅读 · 0 评论 -
若干编码事项
编码规范google开源项目风格指南原创 2019-08-01 15:01:27 · 144 阅读 · 0 评论 -
代码测试覆盖率
C++gcov/lcov安装source : http://sourceforge.net/projects/ltp/./configure && make all && make install使用https://blog.csdn.net/u012234115/article/details/45197591Pythonhttps://...原创 2019-07-12 13:02:41 · 203 阅读 · 0 评论 -
C语言中的强符号与弱符号
from: http://blog.csdn.net/astrotycoon/article/details/8008629 一、概述在C语言中,函数和初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号。对于它们,下列三条规则使用:① 同名的强符号只能有一个,否则编译器报"重复定义"错误。② 允许一个强符号和多个弱符号,但定义会选择强符号的。③ 当转载 2017-04-05 14:09:41 · 949 阅读 · 0 评论 -
C++11改进我们的程序之move和完美转发
转:http://www.cnblogs.com/qicosmos/p/3376241.html本次要讲的是右值引用相关的几个函数:std::move, std::forward和成员的emplace_back,通过这些函数我们可以避免不必要的拷贝,提高程序性能。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如图所示是深拷贝和move的区转载 2017-01-25 10:25:20 · 1755 阅读 · 0 评论 -
double free or corruption
http://gcc.1065356.n5.nabble.com/Global-variable-in-static-library-double-free-or-corruption-error-td657603.html原创 2014-07-07 13:03:35 · 762 阅读 · 0 评论 -
auto_ptr and scoped_ptr
scoped_ptr的用法与auto_ptr几乎一样,大多数情况下它可以与auto_ptr相互替换,它也可以从一个auto_ptr获得指针的管理权(同时auto_ptr失去管理权)。scoped_ptr也具有auto_ptr同样的"缺陷"--不能用作容器的元素,但原因不同:auto_ptr是因为它的转移语义,而scoped_ptr则是因为不支持拷贝和赋值,不符合容器对元素类型的要求。scoped_转载 2014-06-13 15:44:27 · 787 阅读 · 0 评论 -
__attribute__使用的一些总结
以前用VC时没感觉VC有什么问题,现在终于用到了VC不支持的功能 :-)现在做个小小的总结更多见http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html1.__attribute__ format 2.__attribute__ noreturn 3.__attribute__ const转载 2014-07-04 10:10:36 · 1436 阅读 · 0 评论 -
c/c++正则表达式
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。 编译正则表达式 为了提高效率,在将一个字符串与正则表达式进行比较之前,首先要用regcomp()函数对它进行编译,将其转化为regex_t结转载 2013-04-04 18:24:20 · 707 阅读 · 0 评论 -
C++类的成员函数指针
C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。 刚遇到这种语法时也许会让你止步不前。但你会发现,使用恰当的类型定义之后,复杂的语法是可以简化的。本文引导你了解成员函数指针的声明,赋值和调用回叫函数。 成员函数指针的声明转载 2013-03-06 17:43:48 · 892 阅读 · 0 评论 -
c++ 类型转换
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类转载 2012-09-18 15:01:48 · 407 阅读 · 0 评论 -
delete this
from : http://www.cppblog.com/xmli/archive/2009/08/18/93683.htmldelete this--对象请求自杀版本:0.1最后修改:2009-08-18撰写:李现民 第一次见delete this的时候,没觉得这是一项会有什么特殊作用的技术,因此也就没有特别关注。 昨日在sourcemaking.com转载 2012-09-17 18:21:15 · 726 阅读 · 0 评论 -
设计模式
1, 策略模式有很多实现同一功能的算法, 都可以一个个封装起来, 可以方便的替换. 比如选磁盘, 可以随机选, 可以循环, 可以根据磁盘剩余空间选... class Algorithm{public: virtual int PickDisk() =原创 2011-08-15 22:11:38 · 605 阅读 · 0 评论 -
用信号量实现读写锁
semp.resource = MAX_RESOURCE;read_lock(semp){semp.dec(1);}~read_lock(semp){semp.inc(1);}write_lock(semp){semp.dec(原创 2011-08-06 13:01:12 · 2331 阅读 · 0 评论 -
正确重载operator
下面的段落中,我将介绍为用户定义类型选择正确的重载operator+的一般性的策略。 第一步:选择成员函数或是非成员函数? 我们可以象使用类的成员函数一样使用+、-或是==等二进制操作符,例如: class String { public:转载 2011-07-17 15:31:52 · 3040 阅读 · 0 评论 -
Linux如何解决动态库的版本控制
Linux 系统,也同样面临和Window一样的问题,如何控制动态库的多个版本问题。Window之前没有处理好,为此专门有个名词来形容这个问题 “Dll hell”,其严重影响软件的升级和维护。 Dll hell 是指windows 上动态库新版本覆盖旧版本,但是却不兼容老版本。常常发生在程序升级之后,动态库更新,原有程序运行不起来;或者装新软件,但是已有的软件运行不起来。 同样Linux转载 2014-11-08 23:43:39 · 588 阅读 · 0 评论 -
linux下so动态库一些不为人知的秘密(上)
from:http://blog.chinaunix.net/uid-27105712-id-3313293.htmllinux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd转载 2014-11-08 22:18:24 · 677 阅读 · 0 评论 -
linux动态库版本号管理
from:http://blog.chinaunix.net/uid-24907956-id-3979339.html下面引用一段英文原文The shared library sonameIn the earlier example, we embedded the actual name (the real name) of the shared library in an转载 2014-11-08 23:53:43 · 985 阅读 · 0 评论 -
深入右值引用,move语义和完美转发
转载:http://blog.csdn.net/booirror/article/details/45057689乍看起来,move语义使得你可以用廉价的move赋值替代昂贵的copy赋值,完美转发使得你可以将传来的任意参数转发给 其他函数,而右值引用使得move语义和完美转发成为可能。然而,慢慢地你发现这不那么简单,你发现std::move并没有move任何东西,完美转发也并不完美,而T转载 2017-01-25 10:22:58 · 335 阅读 · 0 评论 -
解决 liblog4cpp.a: could not read symbols: Bad value
将 liblog4cpp.a 链接进一个 so, 编译时出现 : liblog4cpp.a(RollingFileAppender.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC重新编译log4cpp $ ./c原创 2017-02-20 17:14:08 · 1205 阅读 · 0 评论 -
crash caused by static variable
the core :#0 0x00007f00795ec600 in ?? () (gdb) bt#0 0x00007f00795ec600 in ?? () #1 0x00007f007a5bc300 in ~function (this=0x7f007a7ec2e0, __x=0xcdc430) at /usr/lib/gcc/x86_64-redhat-linux/4.1.原创 2016-04-13 13:20:24 · 970 阅读 · 0 评论