- 博客(30)
- 资源 (6)
- 收藏
- 关注
转载 C/C++内存管理详解
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)
2011-11-22 16:12:03 527
转载 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则
指针数组和数组指针下面就简单说说这两个概念:一:指针数组,顾名思义,就是说的首先是一个数组吧,然后数组的元素是指针而已。说明形式为:type *pointer_array[constant1][constant2]...[constantn];例如:int *pai[3];由于‘*’是自右向左结合,因此从右向左看,首先看到[4]说明是一个数组,是一个包含4个元素的数组,然后
2011-11-22 16:09:16 2049
转载 c/c++标准预定义宏
一、标准预定义宏The standard predefined macros are specified by the relevant language standards, so they are available with all compilers that implement those standards. Older compilers may not provide all
2011-11-22 16:06:35 596
转载 经典c 教程(ch7 指针和内存分配---下)
7.15 数组的大小可以在程序运行时定义吗? 不。在数组的定义中,数组的大小必须是编译时可知的,不能是在程序运行时才可知的。例如,假设i是一个变量,你就不能用i去定义一个数组的大小: char array[i]; /*(notvalidc */ 有些语言支持这种定义,但C语言不支持。如果C语言支持这种定义,栈就会变得更复杂,调用函数的开销就会更大,而程
2011-11-22 16:03:08 823
转载 C语言宏定义使用技巧
C语言宏定义使用技巧 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义…… 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的
2011-11-22 15:58:07 471
转载 链表之循环链表、双向链表
一、循环链表 循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。 循环链表的运算与单链表的运算基本一致。所不同的有以下几点: 1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。
2011-11-22 15:56:10 473
转载 第5章 常量--变量C++/C 编程指南,v 1.0
第5章常量 常量是一种标识符,它的值在运行期间恒定不变。C语言用 #define来定义常量(称为宏常量)。C++ 语言除了 #define外还可以用const来定义常量(称为const常量)。5.1为什么需要常量如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?(1) 程序的可读性(可理解性)变差。程序员自己会忘记那些数字或字符串是什么意思,用户则更加
2011-11-22 15:53:47 488
转载 林锐 第6章 函数设计
第6章函数设计函数是C++/C程序的基本功能单元,其重要性不言而喻。函数设计的细微缺点很容易导致该函数被错用,所以光使函数的功能正确是不够的。本章重点论述函数的接口设计和内部实现的一些规则。函数接口的两个要素是参数和返回值。C语言中,函数的参数和返回值的传递方式有两种:值传递(pass by value)和指针传递(pass by pointer)。C++ 语言中多了引用传递(pass
2011-11-22 15:50:10 1538
转载 第7章 内存管理
第7章内存管理 欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody— Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管
2011-11-22 15:47:23 481
转载 结构体指针说
今天来讨论一下C中的内存管理。记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面我说所有指针使用前都必须初始化,结构体中的成员指针也是一样有人反驳说,不是吧,以前做二叉树算法时,他的左右孩子指针使用时难道有初始化吗那时我不知怎么的想不出理由,虽然我还是坚信要初始化的过了几天这位同事说他试了一下,结构体中的成员指针不经过初始化是可以用(左子树和右子树指针)那
2011-11-22 15:43:06 1411
转载 修改ARM开发板IP地址(备忘)
要修改ARM开发板的IP,如果是yaffs2文件,可以1、首先要修改/etc/init.d/rcS文件,在/sbin/ifconfig lo 127.0.0.0下添加一行/sbin/ifconfig eth0 192.168.1.20 up注:192.168.1.20 只是举例,可以改成你想要修改的IP地址本来这样修改之后就可以的,但是我发现仍然不行,使用ifconfig命令,发现
2011-11-21 23:24:30 1678
转载 linux下configure命令详细介绍(备忘)
核心提示:Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各
2011-11-21 22:40:51 552
转载 linux下vi命令大全(备忘)
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复f
2011-11-21 19:29:10 496
转载 u-boot命令介绍及烧写程序实例(备忘)
Printenv 打印环境变量。Uboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5Environment size: 80/8188 bytesSetenv 设置新的变量Uboot> setenv myboard AT91RM920
2011-11-21 19:00:10 609
转载 安装交叉编译器arm-linux-gcc:(备忘)
方法1:一、交叉编译环境 gcc-2.95.3 的建立 1.下载cross-2.95.3.tar.bz2 2.建目录,复制,解压# cd /usr/local# mkdir arm# cd arm复制cross-2.95.3.tar.bz2 到当前目录# tar jxvf cross-2.95.3.tar.bz23.导出/usr/local/arm/2.95
2011-11-21 18:53:33 581
转载 使用ALSA编写自己的音频程序
Alsa是Linux高级音频接口。面对众多的音频设备,Alsa为Linux音频开发人员提供了一套标准的访问机制,使得音频开发变得十分容易。不信?下面我们就利用它编写一个简单的录音/播音程序,不过这需要你有一定的计算机语言基础。一个典型的音频程序应该具有以下结构: 打开音频设备 为设备设置读写参数 向音频设备读/写音频数据 关闭设备 Alsa库为我们实现这些操作提供了
2011-11-20 23:39:24 4007
转载 ALSA编程细节分析
Loong:之前写过基于ALSA的WAV播放录音程序,见http://blog.csdn.net/sepnic/archive/2011/01/14/6140824.aspx。现在本想好好整理一下ALSA的编程思想,但Google了一下,发现已经有同道做了类似的工作,故将其转载过来,并添加一些本人的疑问以及补充(将会继续补充,原文很多重要的ALSA参数没有提到)。原文:http://blogo
2011-11-20 22:00:22 854
转载 基于uda34x的ALSA声卡驱动之s3c24xx-pcm.c
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "s3c24xx-pcm.h"#define S3C2
2011-11-19 21:36:23 1106
转载 音频信号
采样精度 -------------------------------------------------------------------------------- 采样精度决定了记录声音的动态范围,它以位(Bit)为单位,比如8位、16位。8位可以把声波分成256级,16位可以把同样的波分成65,536级的信号。可以想象,位数越高,声音的保真度越高。 采样精度 样本大小是用每个声音样本的位
2011-11-19 19:23:02 1906
转载 dma_alloc_writecombine
先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容;否则,就 称为“ 不命中”,CPU只好去内存中调用所需的子程序或指令了。CPU不但可以直接从Cache中读出内容,也可以直接往其中写入内容。由于Cache的存取速 率相当快,使得CPU的利用率大大提高,进而使整个系统的性能得以提升。
2011-11-19 19:18:03 6476
转载 ALSA驱动、设备函数调用关系
soc_probe==> snd_soc_register_card或者snd_soc_register_dai或者snd_soc_register_platform或者snd_soc_register_codec==> snd_soc_instantiate_cards==> snd_soc_instantiate_card==> codec_dev->probe==> ud
2011-11-19 14:41:36 683
转载 linux设备模型之platform总线
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_reg
2011-11-17 22:08:45 1019
转载 test_and_set_bit()等小函数集合
Man page of test_and_set_bit(int nr, volatile void *addr)这样描述它的功能:"Set a bit and return its old value" nr -- Bit to set addr -- Address to count from注意:nr是需要设置的“哪一位”,而不是将addr的值设置成nr。例如"tes
2011-11-17 21:18:33 9968
转载 gpio_request()函数
其原型为 int gpio_request(unsigned gpio, const char *label)先说说其参数,gpio则为你要申请的哪一个管脚,label则是为其取一个名字。其具体实现如下:int gpio_request(unsigned gpio, const char *label) { struct gpio_desc *desc;//
2011-11-17 21:12:21 39696 1
转载 C语言中强制数据类型转换
字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。
2011-11-15 11:35:26 36914 1
转载 MMU(memory management unit)主要功能介绍
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。 一、MMU的历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量
2011-11-15 11:21:02 2273
转载 关于ARM的内存重映射
先说说存储器映射:所谓存储器映射,是指将开发板上不同的存储器映射到开发人员可见的4GB地址空间上,例如,假设开发板上有一个32KB的片内FLASH,16KB的片内SRAM(纯属虚构,如有雷同,纯属巧合),那么,将32KBFLASH映射到地址空间的0x00000000~0x0x00008FFF上,将16KB的SRAM映射到x40000000~0x40004fff上,这样开发者在读写0x00000
2011-11-15 11:11:23 910
转载 linux下S3C2410的DMA驱动程序开发
网上介绍LINUX下的一般驱动程序开发示例浩如烟海,或是因为简单,关于DMA驱动的介绍却寥寥无几;近期zhaoyang因工作需要,花了几日时间开发了某设备在S3C2410处理器Linux下DMA通信的驱动程序,有感于刚接手时无资料借鉴的茫然,故写点介绍,期待能给有DMA开发任务的网友们一点帮助。本文将包括如下内容:DMA驱动主要函数功能 驱动中关键技术分析 具体的DMA实例分析
2011-11-15 11:08:24 1044
转载 嵌入式软件工程师面试题
嵌入式软件工程师面试题预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算
2011-11-15 10:56:28 733
转载 s3c2440的dma操作的一般步骤
一般的,在s3c2440中,要想进行dma传输,需要一下七个步骤:一:int s3c2410_dma_request(unsignedint channel, struct s3c2410_dma_client *client, void*dev);s3c2410_dma_client的定义为:struct s3c2
2011-11-14 19:31:28 1712
4G全网通高清视频传输设备 技术协议
2018-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人