摘要: 可执行程序包括BSS段、数据段、代码段(也称文本段)。BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。注意和数据段的区别,BSS存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。UNIX下可使用size命令查看可执行文件的段大小信息。如size a.out。 阅读全文
posted @ 2013-03-31 11:47 ITtecman 阅读(169) 评论(0) 推荐(0) 编辑
摘要: http://baike.baidu.com/view/608706.htm就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 阅读全文
posted @ 2013-03-30 16:41 ITtecman 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 一般在RAM中运行的程序时这样分段的(从低地址向高地址):程序段(默认名称一般为.text段),恒常量段(.RO段),带初始化值的全局变量段(一般名称为.RW段),不带初始化值的全局变量段(一般名称为.ZI段),然后上面还可能有堆空间,然后在上面是堆栈段(堆栈段的指针初始化在堆栈段的高地址,堆栈指针向下增长)。(当然这只是默认的情况,如果人为指定了链接规则,分布结果就可能不是上面这样了)详情见:http://bbs.csdn.net/topics/390249813 阅读全文
posted @ 2013-03-30 16:06 ITtecman 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 如果开发板ping不通Linux,就不能用nfs文件系统,这是一件非常杯具的事,所以找了几个可能出现的原因,有备无患!现象:能ping通XP或者win7非虚拟机,但ping不通虚拟机可能原因:1、虚拟机配置有问题,应该将网络连接改成“bridge”连接方式2、Linux虚拟机开了防火墙,可以在setup里关掉3、xp里开了防火墙,关了4、ip地址段不对应,如果是虚拟机的是192.168.0.12,那么开发板也应该相应为192.168.0.X,如果还想同时跟xp连接,还应该要将xp的IP地址对应到相对的ip地址段,可以使用‍tftpd32(非常好用小软件)修改,在setting里修改DHCP s 阅读全文
posted @ 2013-03-17 13:58 ITtecman 阅读(860) 评论(0) 推荐(1) 编辑
摘要: http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.aspx先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H #define GLOBAL_H #include <stdio.h> int funca(void); int funcb(void);#endifroot@xuanfei-desktop:~/cpropram/2# cat funca.c //函数a#include &qu 阅读全文
posted @ 2013-03-12 10:42 ITtecman 阅读(288) 评论(0) 推荐(0) 编辑
摘要: linux下错误的捕获:errno和strerror的使用http://www.douban.com/note/165931644/经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。在程序代码中包含 #include <errno.h>,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了。例如:#include &l 阅读全文
posted @ 2013-03-11 12:56 ITtecman 阅读(715) 评论(0) 推荐(0) 编辑
摘要: #include "netdb.h"包含一个头文件。头文件名是 netdb.hMS VC++ 编译器 无此头文件unix 有。net -- 网络 (network),db -- 数据库(database)netdb.h 定义了与网络有关的结构,变量类型,宏,函数。例如:struct hostent*gethostbyaddr(const void *addr, size_t len, int type);struct hostent*gethostbyname(const char *name); 阅读全文
posted @ 2013-03-11 08:32 ITtecman 阅读(1386) 评论(0) 推荐(0) 编辑
摘要: #include <dirent.h>是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数、readdir函数.opendir函数:DIR *opendir(const char *pathname);返回值:若成功则返回指针,若出错则返回NULL。struct dirent *readdir(DIR *dp); 返回值:若成功则返回指针,若在目录结尾或出错则返回NULL。 阅读全文
posted @ 2013-03-11 08:27 ITtecman 阅读(296) 评论(0) 推荐(0) 编辑
摘要: popen()函数原型如下: FILE *popen(const char *cmd,const char *type); 返回值:若成功返回文件指针,出错则返回NULL功能:创建一个管道,fork一个子进程,接着关闭管道的不使用端,子进程执行cmd指向的应用程序或者命令。执行完该函数后父进程和子进程之间生成一条管道,函数返回值为FILE结构指针,该指针作为管道的一端,为父进程所拥有。子进程则拥有管道的另一端,该端口为子进程的stdin或者stdout。如果type=r,那么该管道的方向为:子进程的stdout到父进程的FILE指针;如果type=w,那么管道的方向为:父进程的FILE指针到子 阅读全文
posted @ 2013-03-10 17:44 ITtecman 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 自百度百科ctype.h里的函数概况1 字符测试函数1> 函数原型均为int isxxxx(int)2> 参数为int, 任何实参均被提升成整型3> 只能正确处理处于[0, 127]之间的值2 字符映射函数1> 函数原型为int toxxxx(int)2> 对参数进行检测, 若符合范围则转换, 否则不变int tolower(int); 'A'~'Z' ==> 'a'~'z'int toupper(int); 'a'~'z' ==> 'A'~ 阅读全文
posted @ 2013-03-10 16:12 ITtecman 阅读(274) 评论(0) 推荐(0) 编辑