C语言
HappyMrSpring
这个作者很懒,什么都没留下…
展开
-
从零开始编译一个gcc的交叉编译工具链
建议下载该链接中的编译脚本。原创 2024-03-15 15:16:26 · 420 阅读 · 0 评论 -
你真的懂 Unicode 和 UTF-8 是什么关系吗?来看看这个就彻底懂了!
想必做过爬虫的同学肯定被编码问题困扰过,有 UTF-8、GBK、Unicode 等等编码方式,但你真的了解其中的原理吗?下面我们就来了解一下 Unicode 和 UTF-8 编码到底有什么关系。要弄清 Unicode 与 UTF-8 的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到 Unicode 的出现,我们就会感觉到他们之间的关系ASCII码我们都知道,在计算机的世界里,信息的表示方式只有 0 和 1,但是我们人类信息表示的方式却与之大不相同,很多时候是用语言文字、...转载 2020-11-30 11:59:39 · 362 阅读 · 0 评论 -
性能分析工具
0. 下载链接:https://download.csdn.net/download/liufuchun111/121140121. 安装: 1.1 解压libunwind-0.99-beta.tar.gz和gperftools-2.6.1.tar.gz使用源码方式安装.2. 执行: 2.1 待分析程序修改: 包含头文件: #include <googl...原创 2020-01-21 09:40:40 · 141 阅读 · 0 评论 -
探讨C语言中位字段的内存分配
C语言的位字段是个比较有意思的特性。它的目的是在一个机器字中保存多个对象(每个对象占据若干bit),从而节省内存资源,同时又避免复杂的位运算。在此不再讨论位字段的具体语法,下面将研究位字段的存储特性。 先说含有多个字段(field)的字(word)所占空间的规律——含有多个字段的字的大小是所有字段的类型中的最长的那个的倍数。但要确定究竟是最长类型的几倍则比较复杂,这要看是...转载 2019-07-11 10:56:20 · 349 阅读 · 0 评论 -
Linux C内存池的实现
转自:https://blog.csdn.net/szkbsgy/article/details/50491216在编程中,为了避免由于频繁的malloc/free产生内存碎片,通常会在程序中实现自己的内存管理模块,即内存池。内存池的原理:程序启动时为内存池申请一块较大的内存,在程序中使用内存时,都由内存池进行分配,不再使用的内存交给内存池回收,用于再次分配。内存池一般会有如下的接口:mem...转载 2019-06-12 11:07:58 · 904 阅读 · 0 评论 -
malloc 的原理与产生内存碎片的原因
https://blog.myzony.com/mallocde-yuan-li-yu-chan-sheng-nei-cun-sui-pian-de-yuan-yin/什么是缺页中断?当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:1、检查要访问的虚拟地址是否合法2、查找/分配一个物理页3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)4、建立映射关系...转载 2019-06-14 10:47:47 · 2809 阅读 · 2 评论 -
sscanf功能详解
在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举。这些函数的使用都很简单,总结一下,等下次使用一目了然。俗话说:好记性不如烂笔头,记录下来就是效率。/*****************************************************...转载 2019-04-29 17:55:34 · 113 阅读 · 0 评论 -
关于posix_memalign( )函数的坑
转自:https://blog.csdn.net/lotluck/article/details/77062376 这几天在写aio + epoll 代码,使用aio必须要字节对齐,因此需要用到posix_memalign()这个类似malloc()、alloc()等开辟内存的函数,函数原型: int posix_memalign (void **memptr, siz...转载 2018-11-26 18:36:26 · 4049 阅读 · 2 评论 -
C语言 strftime 格式化显示日期时间 时间戳
转自:http://www.cnblogs.com/xudong-bupt/p/3550157.htmlC/C++程序中需要程序显示当前时间,可以使用标准函数strftime。函数原型:size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );代码示例:...转载 2018-11-23 15:09:24 · 2471 阅读 · 0 评论 -
三种函数调用约定
转自:https://www.cnblogs.com/xuanyuan/p/3917615.html 小议三种函数调用约定__cdecl、__stdcall、__fastcall是C/C++里中经常见到的三种函数调用方式。其中__cdecl是C/C++默认的调用方式,__stdcall是windows API函数的调用方式,只不过我们在头文件里查看这些API的声明的时候是用了WINAP...转载 2018-11-23 11:32:19 · 2938 阅读 · 0 评论 -
c语言中的带参宏定义
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。 对带参数的宏,宏展开和用实参替代形参,发生在预处理阶段。 示例1: #define SUM(x, y) x+x*y+y //定义宏 10 * SUM(2+2, 3+3) 预期结果为:10 * (4 + 4 * 6 + 6) = ...原创 2018-11-20 10:15:57 · 14269 阅读 · 2 评论 -
使用 google-perftools 剖析程序性能瓶颈
转自:https://www.ibm.com/developerworks/cn/linux/l-cn-googleperf/index.htmlgoogle-perftools 简介google-perftools 是一款针对 C/C++ 程序的性能分析工具,它是一个遵守 BSD 协议的开源项目。使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析,本文将重点介绍如何进行...转载 2018-11-22 16:31:43 · 510 阅读 · 0 评论 -
extern "c"用法解析
转自:http://www.jianshu.com/p/5d2eeeb93590引言C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器...转载 2018-11-22 15:37:56 · 133 阅读 · 0 评论 -
linux下内存泄露检测工具Valgrind介绍
一、工作中一个内存泄漏问题的解决过程: 问题背景:我司设备上运行有多个进程,在设备运行两天后,进程jsman所占用的内存达到了1200M bytes(通过ps -aux查看)。 解决步骤: 确定设备上的软件版本,根据git的commit号信息回退代码。 分析哪些操作可能导致进程的内存泄漏。jsman进程是net-snmp的子代理进程,是周期性被动响应snm...原创 2018-10-29 12:15:04 · 209 阅读 · 0 评论 -
ipv6 tcp server
参考:https://stackoverflow.com/questions/12260003/connect-returns-invalid-argument-with-ipv6-address 使用ping测试ipv6网络是否连接: ping6 fe80::be30:5bff:fec8:xxxx。报如下错误:connect: Invalid argument。 ...原创 2018-09-03 15:36:30 · 1426 阅读 · 0 评论 -
sscanf用法示例
转自:https://www.cnblogs.com/Lunais/p/6098731.html 返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 经多次测试[来源请求],在linux系统中成功返回的是成功转换的值的个数,例如:sscanf("1 2 3","%d %d %d",buf1, buf2, buf3); 成功调用返回值为3,...转载 2018-08-16 16:20:19 · 526 阅读 · 0 评论 -
net-snmp移植到ppc时出现的-lperl not found的解决方式
转自:https://blog.csdn.net/wang0901/article/details/504361581,从www.net.-snmp.org下载net-snmp5.7.3源码包解压2,配置 ./configure--build=i686-linux //编译平台,根据平台的不同,可能需要改成i386--host=arm-linux //运行平台CC=arm-linux...转载 2018-08-07 11:40:35 · 684 阅读 · 0 评论 -
C语言通过openssl库计算指定文件的MD5码
1. 在linux终端下可以通过md5sum命令计算文件的MD5,命令如下:2. 在c代码中可以通过openssl库计算指定文件的MD5。2.1 主要用到如下API:a) int MD2_Init(MD2_CTX *c);b) int MD2_Update(MD2_CTX *c, const unsigned char *data, ...原创 2018-04-19 17:36:27 · 1231 阅读 · 0 评论