12 2015 档案

摘要:内存的静态分配和动态分配的区别主要是两个:一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。 二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。... 阅读全文
posted @ 2015-12-31 14:01 alanyunfeng 阅读(883) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-30 21:34 alanyunfeng 阅读(1) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-30 19:11 alanyunfeng 阅读(7) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-30 19:08 alanyunfeng 阅读(2) 评论(0) 推荐(0)
摘要:1、前言 最近项目中用到一个环形缓冲区(ring buffer),代码是由linux内核的kfifo改过来的。缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进 程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要... 阅读全文
posted @ 2015-12-30 14:57 alanyunfeng 阅读(348) 评论(0) 推荐(0)
摘要:写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译... 阅读全文
posted @ 2015-12-30 10:43 alanyunfeng 阅读(3840) 评论(0) 推荐(1)
摘要:要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个例子,比较... 阅读全文
posted @ 2015-12-30 10:39 alanyunfeng 阅读(2411) 评论(0) 推荐(0)
摘要:关键是 栈 和 堆的区别:堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序... 阅读全文
posted @ 2015-12-30 10:18 alanyunfeng 阅读(207) 评论(0) 推荐(0)
摘要:每个人在日常生活中都有可能遇到类似的尴尬情况:到超市以后发现自己忘记要买什么东西,同事好友的名字到了嘴边又突然说不出来。之所以会发生这类事情,是 因为每个人都会发生瞬时(短期)记忆力丧失的情况,也就是大脑中一种名为α2 的脑电波发生轻度异常。这并不是一种病理性改变,所以无妨大碍,但的确会让人发窘。人... 阅读全文
posted @ 2015-12-30 09:59 alanyunfeng 阅读(264) 评论(0) 推荐(0)
摘要:在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对 于任何 变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列, 而不是... 阅读全文
posted @ 2015-12-30 09:56 alanyunfeng 阅读(4088) 评论(0) 推荐(0)
摘要:sizeof()功能:计算数据空间的字节数1.与strlen()比较strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。2.指针与静态数组的sizeof操作指针均可看为变量类型的一... 阅读全文
posted @ 2015-12-30 09:33 alanyunfeng 阅读(281) 评论(0) 推荐(0)
摘要:1、前言 今天在公司看一同事写的代码,代码中用到了struct,初始化一个struct用的是乱序格式,如下代码所示:typedef struct _data_t { int a; int b;}data_t;data_t data = { .a = 10, .b = 20,};... 阅读全文
posted @ 2015-12-30 08:39 alanyunfeng 阅读(307) 评论(0) 推荐(0)
摘要:有时看到如下的代码: ?12345678910111213141516171819/*****************************/#include #include #include void test(){printf("123456\n");}int main(int argc, ... 阅读全文
posted @ 2015-12-30 08:38 alanyunfeng 阅读(13675) 评论(1) 推荐(5)
摘要:假设你的月收入只有2000元,你也可以过得很好。我帮你把钱分成五份。第一份600元,第二份400元,第三份300元,第四份200元,第五份500元。第一份,用来做生活费。这么少的生活费,每天只能够分到十几元。早餐一份煮米丝,一个鸡蛋,一杯豆浆。中餐一份快餐,一个水果。晚餐自己开个小灶,煮点饭,加俩菜... 阅读全文
posted @ 2015-12-29 19:14 alanyunfeng 阅读(320) 评论(1) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-29 16:27 alanyunfeng 阅读(3) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-29 16:16 alanyunfeng 阅读(3) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2015-12-29 16:13 alanyunfeng 阅读(2) 评论(0) 推荐(0)
摘要:有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带来的开销,我们可以使用线程池。下面是一个C语言实现的简单的线程池。头文件: 1: #ifndef THREAD_POOL_H__ 2: #define THREAD_POOL_H__ 3: 4: #inc... 阅读全文
posted @ 2015-12-29 16:08 alanyunfeng 阅读(299) 评论(0) 推荐(0)
摘要:一.概述点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管、段式液晶能模块显示更多、更直观的信息,如汉字、曲线、图片等。点阵液晶显示模块集成度很高,一般都内置控制芯片、行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有... 阅读全文
posted @ 2015-12-28 15:02 alanyunfeng 阅读(6706) 评论(0) 推荐(0)
摘要:一.概述点阵式液晶显示模块(LCD)广泛应用于单片机控制系统,比数码管、段式液晶能模块显示更多、更直观的信息,如汉字、曲线、图片等。点阵液晶显示模块集成度很高,一般都内置控制芯片、行驱动芯片和列驱动芯片,点阵数量较大的LCD还配置RAM芯片,带汉字库的LCD还内嵌汉字库芯片,有负压输出的LCD还设有... 阅读全文
posted @ 2015-12-28 15:01 alanyunfeng 阅读(1335) 评论(0) 推荐(0)
摘要:1.电平的上限和下限定义不一样,CMOS具有更大的抗噪区域。 同是5伏供电的话,ttl一般是1.7V和3.5V的样子,CMOS一般是 2.2V,2.9V的样子,不准确,仅供参考。 2。电流驱动能力不一样,ttl一般提供25毫安的驱动能力,而CMOS一般在10毫安左右。 3。需要的电流输入大小也不一样... 阅读全文
posted @ 2015-12-24 13:36 alanyunfeng 阅读(3181) 评论(0) 推荐(1)
摘要:有限状态机(FSM)是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用。通常FSM包含几个要素:状态的管理、状态的监控、状态的触发、状态触发后引发的动作。本文主要阐述一下状态机的几种设计方法。1:switch case/if else设计方法curEvent =... 阅读全文
posted @ 2015-12-21 20:56 alanyunfeng 阅读(2192) 评论(0) 推荐(0)
摘要:一个成功的软件系统,往往需要根据需求在不同的系统平台上运行,为了解决系统在多个平台的移植带来的风险,业务架构往往会设计相应的平台适配层来隔离不同平台的差异,如何设计一个易于扩展的平台适配层,是软件设计人员需要考虑的问题。设计1:1: 提供平台接口文件os.h2:定义如下:#ifdef OS1#def... 阅读全文
posted @ 2015-12-21 20:14 alanyunfeng 阅读(659) 评论(0) 推荐(0)
摘要:最近学习Linux,看到“hairetz的专栏”的帖子不错,特转来大家一起学习。很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发... 阅读全文
posted @ 2015-12-17 19:54 alanyunfeng 阅读(35245) 评论(1) 推荐(3)
摘要:对于STM8来说,其内部的EEPROM确实是个不错的东西,而且STM8S103/105价格已经非常便宜了,当然也可以用STM8S003/005代替,而且价格更便宜,大概在,1.2/2.0元左右,比103/105的便宜1元左右,而且有网友说,其实这两个系列的晶圆完全是一样的(这个是秘密哦),至于ST为... 阅读全文
posted @ 2015-12-17 19:35 alanyunfeng 阅读(6852) 评论(0) 推荐(0)
摘要:这篇文章主要讨论C语言细节问题。在找一份工作的时候,语言细节占的比例非常小,之前看某个贴着讨论,估计语言细节在面试中,占了10%的比重都不到,那为什么还要研究C语言的细节呢,我觉得有三个原因促使我总结这篇文章:1. 总会有些面试官喜欢问这样的问题,尤其是偏底层开发的面试官。2. 总有有那么两个2B同... 阅读全文
posted @ 2015-12-07 21:15 alanyunfeng 阅读(831) 评论(0) 推荐(0)
摘要:预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。预处理命令以符号“#”开头。 常用的预处理指令包括:宏定义:#define文件包含:#include条件编译:#if、#elif、#ifndef、#ifdef、#endif、#undef错误信息指令:#error#li... 阅读全文
posted @ 2015-12-07 10:33 alanyunfeng 阅读(649) 评论(0) 推荐(0)
摘要:宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。1.不带参数的宏定义:宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”,字符串可以是常数、表达式、格式串等。 在编译预处... 阅读全文
posted @ 2015-12-03 20:00 alanyunfeng 阅读(336) 评论(0) 推荐(0)
摘要:最近在工作当中遇到了一点小问题,关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题.学习C语言已经有好几年了,工作使用也近半年了,但是对于这部分的东西的确还没有深入的思考过.概念上还是比较模糊的,只是之前的使用大多比较简单,并没有牵涉到太复杂的工程,所以定义和声明还是比较简单而明了了的... 阅读全文
posted @ 2015-12-03 19:56 alanyunfeng 阅读(252) 评论(0) 推荐(0)