
C/C++
文章平均质量分 62
云梦谭
这个作者很懒,什么都没留下…
展开
-
RapidJSON 使用说明
(⭐ 14k+)下面是一个使用解析和生成 JSON 的示例代码。原创 2025-02-25 01:00:00 · 385 阅读 · 0 评论 -
C++版URL encode
【代码】C++版URL encode。原创 2025-02-11 15:53:16 · 107 阅读 · 0 评论 -
C++条件变量:实现线程间同步的利器
C++中的条件变量是一种强大的同步工具,它允许线程在特定条件满足之前被阻塞。通过与互斥锁的结合使用,条件变量可以确保对共享数据的访问是安全的,并有效避免竞争条件。然而,在使用条件变量时,需要特别注意虚假唤醒、互斥锁的正确使用以及死锁等问题。通过合理使用条件变量,可以大大提高多线程程序的健壮性和性能。原创 2024-12-09 01:00:00 · 418 阅读 · 0 评论 -
C++互斥锁:确保线程安全的利器
互斥锁(Mutex,全称Mutual Exclusion)是一种用于保护共享资源,防止多个线程同时访问该资源的同步机制。当一个线程获取到互斥锁后,其他尝试获取该锁的线程将被阻塞,直到锁被释放为止。这样,就可以确保在同一时间内只有一个线程能够访问共享资源,从而避免数据竞争和不一致的问题。原创 2024-12-02 12:30:00 · 678 阅读 · 0 评论 -
C++分离线程
join:等待线程完成。detach:将线程与其创建的线程分离,使其独立运行。joinable:检查线程是否可以被join或detach。理解这些方法是编写正确和健壮的多线程C++程序的关键。原创 2024-11-28 01:00:00 · 348 阅读 · 0 评论 -
C++ atomic 使用
是 C++11 标准库中引入的一个模板类,用于实现无锁编程中的原子操作。原子变量可以保证在多线程环境下对变量的读写操作是原子的,即不会被其他线程的操作中断,从而避免数据竞争和未定义行为。以下是。原创 2024-11-11 01:00:00 · 662 阅读 · 0 评论 -
asan runtime does not come first in initial library list 问题解决
asan原创 2023-07-21 13:34:09 · 6290 阅读 · 0 评论 -
GLIBC的堆实现
指针是C/C++程序员的利器,也是恶梦。作为C/C++程序员,与堆打交道是家常便饭,但是,想过没有,堆是怎样工作的呢?堆里的内存块是怎样创建的?怎样释放与回收的呢?有兴趣的话,我们一起探寻一番吧。 堆的实现是决定于你所使用的平台的,现实中存在多种不同的实现。比如:Google Chrome的PartitionAlloc;FreeBSD的jemalloc;还有Linux中缺省的glibc。这里聚焦于glibc ,Linux平台下缺省的C/C++堆实现。它继承于ptmalloc ,而ptm...原创 2022-03-04 15:07:41 · 847 阅读 · 0 评论 -
CSP-J 2021 小熊的果篮
我家小宇在洛谷上刷题,碰到这一道,他解题后,时间复杂度一直拿不到满分。贴一下我辅导他时写的代码。题目描述 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里,具体方法是:每次都把每一个“块”中最左边的水果同时挑出,组成一个果篮。重复这一操作,直至水果用完。注意,每次挑完一个果篮后,“块”可能会发生变化。比如两个苹果“块”之间的唯一桔子被挑走后,两...原创 2021-12-13 09:20:45 · 2116 阅读 · 0 评论 -
64 bit Linux下程序开发注意事项
64 位的优点:64 位的应用程序可以直接访问 4EB 的内存和文件大小最大达到4 EB(2 的 63 次幂);可以访问大型数据库。本文介绍的是64位下C语言开发程序注意事项。1 32 位和 64 位C数据类型 32和64位C语言内置数据类型,如下表所示。 上表中第一行的大写字母和数字含义如下所示:I表示:int类型L表示:...转载 2019-12-26 19:23:58 · 243 阅读 · 0 评论 -
pthread_create线程创建的过程剖析
概述在Linux环境下,pthread库提供的pthread_create()API函数,用于创建一个线程。线程创建失败时,它可能会返回ENOMEM或EAGAIN。这篇文章主要讨论线程创建过程中碰到的一些问题和解决方法。创建线程首先,本文用的实例代码example.c:/* example.c*/#include #include #includ原创 2012-06-18 16:56:13 · 31851 阅读 · 1 评论 -
用gprof分析性能初步
1 简介GNU profiler(gprof)是GNU profiler工具。它可以为Linux平台上的程序精确分析性能瓶颈,它能够记录每个函数的调用次数,每个函数消耗的处理器时间,还能够显示“调用图”,包括函数的调用关系。能够为我们改进应用程序的性能提供很多有利的帮助。官方网站:http://www.cs.utah.edu/dept/old/texinfo/as/gp原创 2012-07-06 14:13:29 · 8685 阅读 · 1 评论 -
lsof交叉编译
LINUX环境下,lsof是一个非常有用的工具。这两天在开发板上调试问题,正需要用它。可是没有现成的,于是乎,自己动手编译一下吧。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 首先下载源码:http://download.chinaunix.net/download/0007原创 2012-07-10 15:33:23 · 4422 阅读 · 0 评论 -
在C/C++程序里打印调用栈信息
我们知道,GDB的backtrace命令可以查看堆栈信息。但很多时候,GDB根本用不上。比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试。如果能让程序自己输出调用栈,那是最好不过了。本文介绍和调用椎栈相关的几个函数。 NAME backtrace, backtrace_symbols, backtrace_symbols_fd -原创 2012-07-18 14:58:01 · 27366 阅读 · 4 评论 -
CentOS 6 编译安装LLVM3.3,Clang和Libc++
转自http://www.cnblogs.com/codemood/p/3142848.html LLVM的最新版本3.3终于在6月17日发布了,按之前的计划6月5日就应该发布了,不过毕竟没有太晚,赶在VS2013 preview(6月26日微软Build大会)之前出来了。加上之前gcc4.8.1在5月底6月初发布,当今最优秀的三大C++编译器都在这个月发布重要更新,这个6转载 2013-11-14 09:42:28 · 4591 阅读 · 1 评论 -
FreeSwitch录音模块研究
注: 本文的源码基于freeswitch V1.6.20。 FreeSwitch中,录音相关的App是由mod_dptools模块提供的。大部分实现代码都在mod_dptools.c中。 App的定义通过宏SWITCH_ADD_APP添加的。在mod_dptools.c的第6345行: SWITCH_ADD_APP(app_interface, "...原创 2018-08-15 20:25:29 · 6385 阅读 · 0 评论 -
X86-64寄存器和栈帧
X86-64寄存器和栈帧概要说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64;正是由于能向后兼容,AMD公司打了一场漂亮翻身战。导致Intel不得不转而生产兼容AMD64的CPU。这是IT行业以弱胜强的经典战役。不过,大家为了名称延续性,更习惯称这种系统结构为x86-64X86-64...转载 2019-03-21 10:56:13 · 399 阅读 · 0 评论 -
帮你解析复杂的C语言声明
<br /> 很多C/C++的初学者,常常被一些复杂的声明语句弄得晕头转向,满头雾水。比如说:char *(*(*a[])())(),这个声明是什么意思呢?<br /> 不用抓耳挠腮,在linux环境下,有一个工具能帮我们解析,它就是cdecl 。它能在C/C++声明和英语间转换。让我们先看看man cdecl里的描述吧:<br />DESCRIPTION<br /> Cdecl (and c++decl) is a program for encoding and deco原创 2010-12-28 10:12:00 · 1016 阅读 · 0 评论