摘要: 用malloc()函数更好还是用calloc()函数更好函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。malloc()函数有一个参数,即要分配的内存空间的大小:void*malloc(size_tsize);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void*calloc(size_tnumElements,size_tsizeOfElement);如果调用成功,函数malloc()和函数calloc()都将返回所分配的内存空间的首地址。函数malloc()和函数calloc() 的主要区别 阅读全文
posted @ 2012-12-30 23:48 azraelly 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 简介FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码.项目组成 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec等。 libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能; l.. 阅读全文
posted @ 2012-12-30 23:45 azraelly 阅读(2466) 评论(0) 推荐(0) 编辑
摘要: 在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments)这几乎是个... 阅读全文
posted @ 2012-12-26 10:56 azraelly 阅读(1180) 评论(0) 推荐(0) 编辑
摘要: 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有 DATA数据传输,RST表示连接重置。其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。RST一般是在FIN之 阅读全文
posted @ 2012-12-25 14:37 azraelly 阅读(748724) 评论(4) 推荐(21) 编辑
摘要: 一、字节序定义字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian。引用标准的Big-Endian和Little-Endian的定义如下:a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高 阅读全文
posted @ 2012-12-25 09:51 azraelly 阅读(6033) 评论(0) 推荐(0) 编辑
摘要: WinDbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。由于大部分程序员不需要做Kernel模式调试, 我在这篇文章中不会介绍Kernel模式调试。Kernel模式调试对学习Windows核心极有帮助。如何得到帮助在命令(Command)窗口中输入.hh 命会调出帮助文件令。.hh keyword会显示关于keyword的详细命令。启动DebuggerWindbg可以用于如下三种调试:远程调试:你可以从机器A上调试在机器B上执行的程序。具体步骤如下: 在机器B上启动一个调试窗口(Debug Session)。你可以直接在Win 阅读全文
posted @ 2012-12-24 12:29 azraelly 阅读(1655) 评论(0) 推荐(0) 编辑
摘要: makefile文件 1.实例:makefile.bak.PHONY:clean #显式指定clean 为伪目标,防止在当前目录下存在clean文件是无法执行清理工作ping:ping.o main.o g++ -Wall -g main.o ping.o -o ping -lpthreadping.o:ping.cpp ping.h g++ -Wall -g -c ping.cpp -o ping.omain.o:main.cpp g++ -Wall -g -c main.cpp -o main.oclean: echo begin dele... 阅读全文
posted @ 2012-12-23 17:39 azraelly 阅读(7737) 评论(0) 推荐(0) 编辑
摘要: 用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程... 阅读全文
posted @ 2012-12-22 17:15 azraelly 阅读(7009) 评论(0) 推荐(0) 编辑
摘要: 用事件通知方式实现的重叠I/O模型 #include <winsock2.h> #include <stdio.h>#define PORT 5150 #define MSGSIZE 1024#pragma comment(lib, "ws2_32.lib")typedef struct { WSAOVERLAPPED overlap; WSABUF Buffer; char szMessage[MSGSIZE]; DWORD NumberOfBytesRecvd; DWORD Flags; }PER_IO_OPERATION_DATA, *LPPE 阅读全文
posted @ 2012-08-11 19:05 azraelly 阅读(944) 评论(0) 推荐(0) 编辑
摘要: Winsock工作模型有下面六种一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型重叠I/O模型 Winsock2的发布使得Socket I/O有了和文件I/O统一的接口。我们可以通过使用Win32文件操纵函数ReadFile和WriteFile来进行Socket I/O。伴随而来的,用于普通文件I/O的重叠I/O模型和完成端口模型对Socket I/O也适用了。这些模型的优点是可以达到更佳的系统性能,但是实现较为复杂,里面涉及较多的C语言技巧。 阅读全文
posted @ 2012-08-11 18:54 azraelly 阅读(2549) 评论(0) 推荐(0) 编辑