![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
wfreehorse
这个作者很懒,什么都没留下…
展开
-
Linux Makefile自动生成--总体流程
原始出处:http://blog.csdn.net/spch2008/article/details/12504705步骤一:[plain] view plain copy print?your source files --> [autoscan*] --> [configure.scan] --> configure.转载 2017-03-17 17:24:03 · 383 阅读 · 0 评论 -
slab alloc内存分配机制
原始出处:http://blog.csdn.net/pengzhixi/article/details/4187680slab的“对象重用” 到目前为止,SUN于1991年发明的Slab Allocator是各种OS内核Memory Allocator中被认为整体性能最好的。它有几个措转载 2017-03-13 10:48:51 · 548 阅读 · 0 评论 -
Slab Allocator内存管理原理
原始出处:http://blog.sina.com.cn/s/blog_72995dcc01018t2t.htmlSlab Allocator(对象缓存分配)The fundamental idea behind slab allocation technique is based on the observation that some kernel data obj转载 2017-03-13 11:30:23 · 3126 阅读 · 0 评论 -
Glib内存管理模块之magazine layer
原文出处:http://blog.csdn.net/mercy_pm/article/details/533988021. 简介: Glib中使用了slab进行内存管理(代码解释见[1],cache coloring见[2]),同时引入了magazine cache来进行多级缓存。本文主要介绍magazine cache部分实现,不讨论slab和使用malloc的实现代码。转载 2017-03-09 10:16:34 · 1071 阅读 · 0 评论 -
数据的对齐(alignment)
对齐(alignment)数据的对齐(alignment)是指 数据的地址 和 由硬件条件决定的内存块大小 之间的关系。一个变量的地址是它大小的倍数的时候,这就叫做自然对齐 (naturally aligned)。例如,对于一个32bit(4 Byte)的变量,如果它的地址是4的倍数,-- 就是说,如果地址的低两位是0,那么这就是自然对齐了。所以,如果一个类型的大小是2n(按:不原创 2017-03-16 18:55:29 · 10507 阅读 · 0 评论 -
Bionic简介
1. 什么是BionicBionic是Android平台为C/C++开发者进行原生应用程序开发所提供的符合POSIX(可移植操作系统接口)标准的C库。是Android操作系统BSD(UNIX操作系统中的一个分支)标准C库的衍生库。Bionic提供了在Android平台上开发任何类型的功能性原生代码所需的最小构造集。通俗地讲,Bionic(Bionic的头文件原创 2017-03-27 10:14:34 · 1601 阅读 · 0 评论 -
如何实现 C 语言的继承和多态
上面一篇博客中写了《如何实现 C 的函数重载》,本文将进一步讲讲如何实现 C 语言的继承和多态,其实大致的思想已经在前面的一篇博客《200 行 C 代码实现插件式 NOSQL 存储服务器(一)》中体现过了,主要就是如何灵活运用C的函数指针这一特性!等等,C本身是不支持继承和多态的,那还煞费苦心实现 C 的继承和多态干嘛呢?其实在 C 的世界里,有一套非常有名的面向对象的框架,用的也转载 2017-04-14 09:39:23 · 435 阅读 · 0 评论 -
Glib的数据类型和常用知识
标准的GLib数据类型:gboolean真或假,与GLib定义的TRUE和FALSE常量一起使用gpointer通用指针,即void *gchar和guchar字符和无符号字符gint、guint、gshort有符号和无符号数据类型glong、gulong长度根据硬件和操作系统体系结构的不同而变化gint8、guint8、gint16、guint16原创 2017-04-19 11:03:29 · 2950 阅读 · 0 评论 -
Glib中Gquark浅析
Glib中Gquark浅析夸克,英文名叫quark,原意是表示一种物理单位;第一次在GLIB中看到这个名词,很有意思。下文摘自http://blog.csdn.net/ciahi为了在程序中标识一块数据,你一般有两种方式可选:数字或字符串。但是这两者都有一些缺点。数字是非常难以辨认的。如果你开始粗略的知道需要多少标签,你就可以定义一个枚举类型和一些字符符号。但是,你没法在运转载 2017-04-19 11:09:18 · 649 阅读 · 0 评论 -
va_start和va_end使用详解
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(..转载 2017-04-19 16:11:41 · 385 阅读 · 0 评论 -
gstreamer中由gstbuffer unref引起的crash分析
在调试字幕插件的时候,碰到了一个问题: 在切换文本字幕和图片字幕的过程中,会概率性的发生crash,串口显示signal 11,通过分析生成的coredump文件,得到了如下信息:(敏感信息都以×代替,不影响分析问题)(gdb) where#0 0xf56317d0 in magazine_chain_pop_head () from /××/symbols/system/vendo原创 2017-07-29 09:52:15 · 3388 阅读 · 0 评论 -
c结构体对齐深刻理解
按:非常不错的资料,对于结构体相关的对齐问题基本上讲的比较详细。最近在实习的公司,作为新人和其他的新人做了一个新人技术交流会,主要是关于C的一些基础知识,包括了C的编译,链接,指针,数组,字符串,结构体等,以及一些项目相关的知识,总的来说技术交流会还是很有用的,大家可以相互讨论,这样更容易理解。好了,言归正传,C中对于结构体的使用可以说是非常的频繁和必要的,正确理解结构体的内存转载 2017-03-21 17:07:16 · 437 阅读 · 0 评论 -
为什么需要字节对齐?
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访转载 2017-03-21 15:31:27 · 761 阅读 · 0 评论 -
C 语言内存分配函数
ANSI C 中有 3 个分配内存的函数:malloc,calloc,realloc。ANSI C 中的内存空间分配函数 ANSI C 中有 3 个分配内存的函数:malloc,calloc,realloc。函数原型 #include stdlib.h>转载 2017-03-21 09:57:52 · 634 阅读 · 0 评论 -
Linux Makefile自动生成--实例
原始出处:http://blog.csdn.net/spch2008/article/details/125060611. 创建程序[cpp] view plain copy print?#include int main(int argc, char* argv[]) { printf转载 2017-03-17 17:25:56 · 268 阅读 · 0 评论 -
Linux Makefile自动生成--config.h
原始出处: http://blog.csdn.net/spch2008/article/details/12510805config.h主要用于代码移植,产生可移植代码。有些函数只适用于特定的系统,并不通用,如gettimeofday。只能在特定的系统上使用,这样就不能移植了。可以在可以使用的系统上使用gettimeofday,而不能使用的系统上使用另一种方式。转载 2017-03-17 17:35:10 · 1256 阅读 · 0 评论 -
configure.ac 范例
原始出处: http://blog.csdn.net/john_crash/article/details/50110481检查头文件AC_CHECK_HEADERS([headers]) 例如:AC_CHECK_HEADERS([unistd.h windows.h])1这个宏将在当前建造环境下检查unistd.h,windows.h是否存在。并将转载 2017-03-17 18:17:25 · 1332 阅读 · 0 评论 -
c语言基本数据类型(short、int、long、char、float、double)
一 C 语言包含的数据类型short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。在不同的系统上,这些类型占据的字节长度是不同的:在32 位的系统上short 占据的内存大小是2 个byte;int占据的内存大小是4 个byte;long占据的内存大小是4 个byte原创 2017-03-06 19:29:24 · 135413 阅读 · 2 评论 -
c语言中的关键字:sizeof
1. 概念:sizeof是C/C++中的一个单目操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。如C语言的其他操作符++、--等,sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。 MSDN上的解释为: The sizeof keyword gives the amount o原创 2017-03-06 19:45:23 · 1005 阅读 · 0 评论 -
C语言中const,volatile,restrict
一. const1. 定义:变量声明中带有关键词const,意味着不能通过赋值,增量或减量来修改该变量的值,这是显而易见的一点。指针使用const则要稍微复杂点,因为不得不把 让指针本身成为const 和 指针指向的值成为cons t区别开来:下面的声明表示pf指向的值必须是不变的,而pf则是可变的,它可以指向另外一个const或非const值const原创 2017-03-07 09:31:27 · 524 阅读 · 0 评论 -
Memory slice解释
/** * SECTION:memory_slices * @title: Memory Slices * @short_description: efficient way to allocate groups of equal-sized * chunks of memory 分配大小相同的内存块组的有效方式 * * Memory slices provi原创 2017-03-20 18:37:16 · 2670 阅读 · 0 评论 -
C语言 存储类说明符
一 存储类有关C语言的存储类,推荐的参考资料:C Primer Plus ,其中有一章专门讲解这个;在理解C的存储类之前,首先要搞懂的概念有:作用域、生存周期、连接属性C中的存储类说明符实际上是上述属性的不同组合作用域:一个C变量的作用域可以是代码块作用域(在函数内部代码块中定义的变量、形参,称为局部变量),函数原型作用域(从变量定义处一直到原型声明的末尾),文转载 2017-03-07 16:39:38 · 6550 阅读 · 0 评论 -
c语言3种链接属性: 外部(external), 内部(internal),无设置(none)
http://blog.csdn.net/ljz2009y/article/details/8142653c语言中,多个文件组合的时候,有可能标示名相同,那么这个时候编译器如何判别的呢? c语言中有3种链接属性: 外部(external), 内部(internal),无设置(none) 外部(external): 使用extern关键字 内部(intern转载 2017-03-07 11:02:11 · 625 阅读 · 0 评论 -
extern 关键字详解
原文出处:http://blog.csdn.net/hjxhjh/article/details/129142831 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern转载 2017-03-07 19:30:35 · 12355 阅读 · 1 评论 -
C语言中的文件操作
C语言中的文件操作函数,将数据写入文件。具体如下一、打开文件。使用fopen函数。格式为:FILE *fopen(const char *name, const char * mode);其中name为要写入的文件名,mode为格式字符。要写入文件,mode可以是:1、 "w" 只写方式,文本形式输入;2、"wb" 只写方式,二进制形式输入;3、"wb+" 读写方式,二进制形式输入;4、"w+"原创 2017-09-15 11:35:29 · 505 阅读 · 0 评论