linux C语言
文章平均质量分 63
ljclx1748
这个作者很懒,什么都没留下…
展开
-
结构体中动态内存的管理(malloc和free)
C语言中内存的管理主要是依据malloc和free实现的,其中malloc主要是实现内存的分配,而free则是实现内存的释放。虽然这是我们已经很熟悉的,但是还是存在一些问题。特别是当结构体中存在指针的情况下,各种问题也就会展现出来。其中最大的问题是:结构体中指针变量没有指向一块合法的内存空间,就对指针参数进行操作,这也是很多C语言程序员经常犯的错误。简单的实例如下:转载 2012-09-09 11:50:31 · 840 阅读 · 0 评论 -
qsort和bsearch的运用
#include #include #define SIZENUM(arryname) sizeof(arryname)/sizeof(student)typedef struct{ int studentId; char studentname[30];}student;student Student[]={ {2011,"zhangsan"}, {198原创 2013-05-06 17:25:48 · 566 阅读 · 0 评论 -
enum没有枚举名字也可以
这个C语言的枚举为什么开头只有一个“enum”而没有枚举名?这样的是什么作用? 检举|2013-03-10 15:59 a313785 | 分类:C/C++ | 浏览66次/* PRISM54_HOSTAPD ioctl() cmd: */enum { PRISM2_SET_ENCRYPTION = 6, PRISM2_HOSTAPD_SET_GENERIC_ELEMENT = 12,转载 2013-05-03 15:28:26 · 2289 阅读 · 0 评论 -
FILE和int型文件描述符互相转换函数
把FILE *的文件描述符转换成int型的fd函数是:int fileno(FILE *tream) ,把int型的fd文件描述符转换成FILE *的文件描述符函数是:FILE *fdopen(int fd, const char *mode)。互相转换后两者指向同一个流,如果关闭了其中一个,另一个也关闭了,如果尝试去关闭的话就会返回错误。比如原先是FILE *型的,调用fileno得到一个i原创 2013-04-24 13:56:30 · 4254 阅读 · 0 评论 -
gcc 参数详解
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x languag转载 2013-04-11 13:22:38 · 571 阅读 · 0 评论 -
glib和uclibc的区别
uClibc和Glibc并不相同,两者有许多不同之处,而且以下不同有可能给你带来一些问题.1.uClibc比Glibc小,虽然uClibc和Glibc在已有的接口上是兼容的,而且采用uClibc编译应用程序比采用Glibc编译应用程序要更方便,但是uClibc并没有包括Glibc中的所有接口实现,因此有些应用可能在uClibc中不能编译。2.uClibc在可配置性上比Glibc要好。3转载 2013-03-25 20:14:43 · 1489 阅读 · 0 评论 -
库函数bsearch,实例
下面是一个二分查找的库函数实例,写的很简单,没有做什么错误处理,变量定义也很简单,主要是为了实现功能,系统的朋友可以看看。 #include #include struct num{ int a; int b;}numab[]={ {1,10}, {2,9}, {3,8}, {4,7}, {5,5}, {6,4}, {7,3}, {8原创 2013-03-25 18:04:44 · 774 阅读 · 0 评论 -
S_ISCHR等
import os,time,statfileStats = os.stat ( 'test.txt' ) #获取文件/目录的状态fileInfo = {'Size':fileStats [ stat.ST_SIZE ], #获取文件大小'LastModified':time.ctime(转载 2013-04-08 10:28:47 · 4972 阅读 · 0 评论 -
void和void *
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int *pint;void *pvoid;pvoid = pint; /* 不过不能 pint = pvoid; */如果要将pvoid赋给其他类型指针,则需转载 2013-03-21 19:09:01 · 809 阅读 · 0 评论 -
setjmp和longjmp 转来的
C语言的setjmp:异常处理与构建协作式多任务系统int setjmp(jmp_buf envbuf)宏函数setjmp()在缓冲区envbuf中保存系统堆栈里的内容,供longjmp()以后使用,setjmp()必须使用头文件setjmp.h。调用setjmp()宏时,返回值为0,然而longjmp()把一个变原传递给setjmp(),该值(恒不为0)就是调用longjmp()转载 2013-01-21 09:54:07 · 417 阅读 · 0 评论 -
v4l2
http://linuxtv.org/downloads/v4l-dvb-apis/一,什么是 video4linuxVideo4linux(简称V4L),是linux中关于视频设备的内核驱动,现在已有Video4linux2,还未加入linux内核,使用需自己 下载补丁。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/videoN下,N可转载 2013-01-29 14:44:38 · 2171 阅读 · 0 评论 -
setsockopt设置socket状态
setsockopt设置socket状态1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调转载 2013-01-11 15:35:37 · 346 阅读 · 0 评论 -
static在头文件中定义变量的问题
看到有一位同学在头文件中这么写:?12staticconst wchar_t* g_str1 = …staticconst wchar_t* g_str2 = …这种定义变量的方式我从来没有见过,而且它还能顺利通过编译,于是我很想知道编译器是如何处理这种变量定义的。 定义全局变量时使用sta转载 2013-01-11 15:14:19 · 558 阅读 · 0 评论 -
malloc(0)的问题
转自:http://blog.csdn.net/js_xj/article/details/5826042ANSI C的,如果认为malloc(0)是语法错误的话,下面我写的就不用看了。下面进入正题,关于malloc(0)这个问题,我在网上看到有个面试题好像就是问这个的,原题好像是:char *ptr; if ((ptr = (char *)malloc(0)) == NULL转载 2013-01-10 11:34:20 · 328 阅读 · 0 评论 -
C语言字节对齐
c语言struct编译器数据结构alignment 文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对转载 2013-01-03 14:17:44 · 400 阅读 · 0 评论 -
ifndef和if !defined
ifndef和if !defined在C/C++中,常使用下面的预处理方式避免重复包含头文件引起的重复定义问题://---------------------------------------------------------------------------------------------------------------------//第一种方式:使转载 2013-10-21 10:55:07 · 635 阅读 · 0 评论