jemalloc 介绍及编译步骤本文直接略过,仅记录一下C++程序如何接入jemalloc,以及如何确认jemalloc已载入。注:jemalloc是非侵入式的,目标程序无需依赖jemalloc库,只需要在目标
-
2023-05-22 14:19:14
-
memcpy() 是非线程安全的,并发时需加锁或使用原子操作
最近调查线上一个问题,就是一块 int32 的内存会极低概率出现 -18亿的巨数字,有时又是正确的。自己刻意测试又不能再现,在确认不可能将这样一个巨量数字写入的情况下,这时只
-
【解决】undefined reference to 'apr_thread_rwlock_destory'、undefined reference to 'apr_initialize'
1、首选确认安装了apr及apr-util否则报错<apr-1 apr_xxx h>头文件找不到。2、-lapr-1 -laprutil-1添加库链接,否则报错:undefined reference to & 39;apr_thread_rwlock_de
2023-03-24 15:35:20 -
使用MVCC可以解决。轻量级的不使用MVCC的话,思路如下:核心ObjPtrmap<id, ObjPtr> map_;Get的时候返回最新的ObjPtr;当ObjPtr有新版本要更新的时候,将map中对应id的ObjPtr中is
-
本文系统全面总结C++开发高并发低延迟程序的各种技巧,均已经历过大型系统的线上锤炼。(持续更新,欢迎讨论补充,有任何问题或需要指导的欢迎扫描页面右侧二维码添加微信好友)
2023-03-08 17:16:50 -
C++ 打开文件,以清空覆盖的方式,代码如下:std::unique_ptr<ostream> stream = std::make_unique<fstream>("xxx", ios::trunc | ios::out | ios::in);*stream << "co
-
C、C++混合编译时,C头文件不加 extern "C",函数按照C++编译会改变函数名称,导致link时报undefined reference to `xxx` 的 错误。加 extern "C" 解决,但是直接加的话
2021-08-25 14:50:49 -
【解决】double free or corruption (!prev)
*** glibc detected *** cupd: double free or corruption (!prev): 0x093b1208 ***可能原因:1、多次释放同一内存区,需要检查代码,是否出现了对同一内存区释放两
-
【解决】munmap_chunk(): invalid pointer
原因:new malloc出来的指针被覆盖掉了,然后delete free就会报这个错误。例如:char* word = (char*)malloc(10);word = "abc"; 应使用 strcpy(word, "abc");free(word)
-
namespace “std” has no member “clamp”
error: ‘clamp’ is not a member of ‘std’namespace std has no member clampC++17特性,加编译选项 -std=c++17
2021-07-06 16:49:48 -
‘std::tr1’ does not name a template type
解决方法:添加头文件 if !defined(_MSC_VER) include <tr1 memory> endifC++ Technical Report 1 (TR1)是ISO IEC TR 19768, C++ Library Extensions(函式库扩充)的
-
protobuf 是结构化数据的系列化 反序列化解决方案,类似XML JSON,但他的运行效率及压缩率均较后者高一个数量级,且完全的跨平台。使用步骤如下:1、定义一个 proto数据结构文件
2021-07-04 20:07:31 -
编译错误 error: ‘typeof’ cannot be used as a function
编译一些开源的C项目,发现typeof关键字不能被识别,报错:error: ‘typeof’ cannot be used as a function。解决方法:修改C编译选项 -std=gnu99,使用GNU99
-
编译错误 error: ISO C++ forbids declaration of ‘xxx’ with no type [-fpermissive]
比较可能的情况1:函数没有写返回类型,加上返回类型后编译成功。 ifndef ttTree_h define ttTree_hclass ttTree {public: ttTree(void); int ttTreeInsert(int value
2021-06-30 21:18:38 -
gcc编译警告:misleading-indentation
misleading-indentation(不正确的缩进),一般都是Tab及空格的缩进问题导致。实例1:Tab、空格混用将:[空格] if(err)[空格] fprintf(stderr, "op faile
-
C++ std::cout输出2位小数的代码: include <stdio h> include <iostream> include <iomanip> std::setprecision函数需要引入该头文件int main(){ double dval
2021-06-11 13:24:50 -
浅析Linux段错误:SEGV_MAPERR、SEGV_ACCERR
有两种常见的段错误,SIGSEGV 是段错误终止信号,通常是由无效内存访问导致的错误:访问了具有错误权限的页面。例如,它是只读的,但您的代码试图写入它。这将报告为SEGV_ACCERR
2021-06-07 13:25:39 -
c++11 std::call_once只调用一次函数,类似单例模式
std::call_once 保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次,Demo如下: include <iostream> include <thread>static std::once_flag g_once_flag
-
VS编译dll时报编译错误:fatal error LNK1561: entry point must be defined
VS编译dll时报编译错误:fatal error LNK1561: entry point must be defined1、可能是连接命令中的 subsystem不正确,在Project Properties->Linker->System中设置,改为