- 博客(46)
- 资源 (7)
- 收藏
- 关注
转载 Linux环境下段错误的产生原因及调试方法小结
Linux环境下段错误的产生原因及调试方法小结最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来
2013-10-27 23:17:15
513
转载 VS2010下安装boost库
VS2010下安装boost库1.去www.boost.org下载最新的boost,我下载了boost_1_46_1.7z2.(我放在D:/cpp目录下)解压到当前文件夹3.打开VS2010->VS TOOLS->VS命令提示4.CD D:/cpp/boost_1_46_1 5.输入bootstrap,便生成bjam.exe文件6.输入bjam toolset=
2013-09-26 21:46:47
627
原创 编写一个函数,反序排列一个单链表的所有节点
#include#includetypedef struct Data{ int num; struct Data *next;} Data;Data * creat(Data *head){ int n = 0; Data *p1, *p2; p1 = p2 = (Data *)malloc(sizeof(Data)); if(p1 == NU
2012-08-09 21:57:11
2241
原创 c语言变量的属性
1. 变量定义和声明让我们更为仔细的看一下变量的定义和变量声明的区别,考虑如下例子:int tern = 1; //定义ternmain(){ extern int tern;//使用在其他地方定义的tern变量}这里,tern声明两次。第一次声明为变量留出了存储空间。它构成了变量的定义。第二次声明只是告诉编译器要使用先前定义的变量tern,因此不是定义。
2012-07-26 21:39:22
3017
原创 scanf函数和printf函数特别
1. scanf函数返回值告诉我们它是否成功的读到数据,如果成功返回非0,否则返回整数0。#includeint main(){ int value1; int value2; printf("please input value1!\n"); (1)int ret = scanf("%d", &value1);
2012-07-25 22:46:56
788
原创 linux命令(3)
1.linux下环境变量的设置: csh中用setenv定义环境变量(全局变量),环境变量的变量名用大写,set定义局部变量且变量名用小写,删除环境变量:unsetenv 变量名。例如,setenv LANG c或zh:设置csh 的语言环境为英文或中文。将setenv LANG c 写在.cshrc,执行source .cshrc命令,使该文件生效。 binsh:定义
2012-07-25 22:42:52
2717
原创 linux命令(2)
1.ls:显示目录文件内容, -R 显示目录层次 -a 显示隐藏文件,-i 显示i-node。 df -k :查看硬盘的空间。 mesg n:禁止其他消息干扰你的终端。 tail -f:时时观察日志文件的变化。 cat file1 file2 file3 >newfile //文件的合并。 cat /dev/null > ~/file //清空file文件的
2012-07-25 22:28:27
532
原创 linux命令(1)
1.pwd:显示当前目录 mkdir :创建目录,-p 建立目录层次,例如 建立 ./p1/p2/p3 mkdir -p ./p1/p2/p3。2.远程登陆的每一位用户,通过伪终端号区分的。3.在管理员权限下,用“passwd -d 口令”删除口令。4.id:显示用户的用户id和组id。5.shell的类型:%:c shell提示符;binsh(默认sh)-sola
2012-07-25 22:11:42
761
原创 关于“cannot find a valid peer process to connect to”错误的解决方法
用VMware安装了LINUX后.在使用过程中出现了"cannot find a valid peer process to connect to"的错误提示其实解决方法很简单,解决方法如下:1、在dos命令行下执行net start vmx86,以启动peer process解决掉这个问题后.重新打开虚拟机.启动熟悉的LINUX又可以继续用啦.
2012-05-12 15:42:21
2012
原创 c语言 三
1.数组名的值是一个【指针常量】,也就是数组第一个元素的地址。它的类型取决于数组元素的类型:如果它们是int类型,那么数组名的类型就是“指向int的常量指针”。下列两种情况:数组名并不用指针常量表示———就是当数组名作为siziof操作符或单目运算&的操作数是。【注意】:数组名是指针常量,所以不能被修改。2.下标引用:通过一个例子来讲解下标引用.int a[10] = { 2, 45, 3
2012-04-12 09:54:47
637
原创 递归函数的原理
1. 函数定义:就是函数体的实现。函数体就是一个代码块,它在函数被调用时执行。函数声明:向编译器提供该函数的相关的信息,包括:参数的数量,每个参数的类型以及返回值的类型。用于函数被正确的调用。【注意】:当一个函数被调用时,编译器如果无法看到它的任何声明,那么它就假定函数返回一个整型值。对于那些返回值不是整型的函数,在调用之前对它们进行声明是非常重要的,这可以避免由于不可预测的类型
2012-04-10 11:32:42
11720
原创 指针 二
6.7指针表达式:在理解下面内容时,切记,左值意味着一个位置,右值意味着一个值。char ch = ‘a’;char *cp = &ch;现在,初始化上面的两个变量如下:途中还显示了ch后面的那个内存位置,因为我们所求的表达式将访问它。因为不知道它的初始值,所以用?代替。如下开始逐个介绍指针表达式:1.当ch作
2012-04-08 14:12:23
707
原创 指针 一
6.1名字与内存:高级语言特性之一就是通过名字而不是地址来访问内存位置,名字就是我们所称的变量,名字与内存之间的关联并不是由硬件所提供,它是由编译器为我们实现的。6.2 未初始化和非法指针: 下面这个代码段说明了一个极其常见的错误: int*a; *a= 12; 这里声明创建了一个名叫a的指针变量,后面那条语句把12存储在a所指向
2012-04-07 16:49:26
505
1
原创 c语言基础 二
5.1 算数操作符:1.当" / "操作符的两个操作数都是整数时,它执行整除操作,在其他情况下执行浮点数除法。 2." % "为取模操作符,它接受两个整形操作数。5.2 移位操作符:1.左移位操作符 " > "。 注意:对于【无符号值】执行的所有移位操作都是逻辑移位。对于有符号值移位操作:如果是左移,右边空出来的位补零,而且算术左移和逻辑左移的结果
2012-04-07 14:34:16
497
1
原创 c语言基础 一
2.1编译过程几个阶段: 【预处理器】:在源代码上执行一些文本操作,例如:用实际值代替由#define指令定义的符号以及由#include指令包含的文件内容,滤掉注释。 【解析】:判断代码语句的意思,产生绝大多数的错误和警告信息的地方。 产生目标代码:目标代码是机器指令的初步形式,用于实现程序的语句。2.2【执行】:在大多数机器里,程序使用一个运行
2012-04-05 20:38:20
618
1
原创 C/C++中,内存中数据存储分成4个区:堆、栈、全局/静态存储区和常量存储区。
栈(stack),就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆(heap),一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。 全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的(DATA段)和未初始化的(BSS段),在C++里面没有这个区分了
2012-04-01 10:29:23
4774
原创 const与指针的应用
int age = 10;const int * ps =&age; //ps的只可以修改ps的值,但不允许修改age的值int * const find= &age; //find只能指向age,但允许find来修改age的值;const int * conststick = &age //stick只能指向age,而stick不能用来修改age的值;注意:如果数
2012-03-30 22:29:49
354
原创 使用管道实现进程间的双向通信
#include#includeint main(int argc, char * argv[]){ int f_des1[2]; int f_des2[2]; int pid; char msg[BUFSIZ]; char p_msg[BUFSIZ];
2012-03-29 23:13:10
1017
原创 设置线程优先级和调度算法的实例
/*设置线程优先级和调度算法的实例*/#include#includevoid *thread_one_info(void){ int i; for(i = 0; i { printf("in thread1, sleep...\n"); sleep(1); } printf("thread %ld:in thread_one——info func
2012-03-27 07:11:42
1005
原创 多线程
1. 创建线程与退出线程int pthread_create(pthread_t * thread, const pthread_attr_t *attr, void *(*start)(void*), void *arg )返回值:成功 0, 失败 -1,Thread_create 函数用于创建线程,参数thread用于保存线程的线程变量。attr参数为要设
2012-03-26 23:09:54
469
原创 linux socket聊天程序
socket.h#include #include#include#include#include#include#include#include#include#include#incl
2012-03-22 22:48:53
2428
原创 warning: incompatible implicit declaration of built-in function ‘strcpy’
warning: incompatible implicit declaration of built-in function‘strcpy’ warning: incompatible implicit declaration of built-in function‘strlen’ warning: incompatible implicit declaration of built
2012-03-22 22:40:26
7012
原创 U盘的挂载
1.输入fdisk -l /dev/sda 或 fdisk -l /dev/sdb 查看输出结果。 输出结果: /dev/sdb12.如果是fat16就使用下面命令 mount -t msdos /dev/sdb1 /mnt 如果是fat32 mount -t vfat /dev/sdb1 /mnt3.使用linux命令操作u盘
2012-03-20 19:36:55
504
原创 链栈的实现
#include 2 #include 3 #define TRUE 1 4 #define FALSE 0 5 //typedef struct node *pnode; 6 typedef struct node 7 { 8 int data; 9 struct node *next; 10 }Stack,*L
2012-03-19 21:50:35
372
1
原创 ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock
通过终端安装程序sudo apt-get install xxx时出错:E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)E: Unable to lock the administration directory (/var/lib/dpkg/), is anothe
2012-03-19 18:44:29
900
1
原创 No symbol table is loaded. Use the "file" command
No symbol table is loaded. Use the "file" command symbol command table Use loaded 源文件在编译时,没有使用 -g 参数
2012-03-18 10:25:48
9710
1
原创 make的常见错误信息
错误信息都有前缀,一种是执行程序名作为错误前缀(通常是“make”);另外一种是当Makefile本身存在语法错误无法被make解析并执行时,前缀包含了makefile文件名和出现错误的行号。在下述的错误列表中,省略了普通前缀:[FOO] Error NN[FOO] signal description这类错误并不是make的真正错误。它表示make检测到make所调用的作为执行命
2012-03-17 10:20:18
7455
原创 编译出现的错误
pthread08.c:8:22: error: request for member ?.hread_tid?.in something not a structure or union 8line pthread_create(&tptr.thread_tid, NULL, &thread_main, (void *) i); 改为: pthrea
2012-03-17 10:00:08
592
原创 malloc详细讲解
p = (int *) malloc (sizeof(int)*128);//分配128个(可根据实际需要替换该数值)整型存储单元,并将这128个连续的整型存储单元的首地址存储到指针变量p中malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的
2012-03-13 20:58:46
594
原创 ubuntu从命令行启动的方法
版本是10.04修改/boot/grub/grub.cfg:menuentry 'Ubuntu, with Linux 2.6.32-28-generic' --class ubuntu -class gnu -linux --class gnu -class os {......linux /boot/vmlinuz-2.6.32-28-generic ro
2012-03-11 15:14:14
508
原创 推荐电影
让这些电影治愈你1、缺乏学习动力:《幸福终点站》、《风雨哈佛路》2、对爱失望:《偷天情缘》、《初恋50次》3、自卑失落:《阿甘正传》、《肖申克的救赎》4、失败或绝望:《铁权男人》、《迫在眉梢》、《伊丽莎白镇》5、厌倦生活:《在世界的转角遇见爱》、《搏击俱乐部》最费脑力的14部电影《盗梦空间》、《记忆裂痕》、《生死停留》、《死亡幻觉》、《禁闭岛》、《穆赫兰道》、《蝴蝶
2012-03-03 16:10:26
823
原创 linux 下socket编程
1.//这个结构用来存储套接字地址 struct sockaddr { unsigned short sa_family; //address 族,AF_xxx char sa_data[14]; //协议地址 }; 2. struct sockaddr_in { short int sin_family;
2012-02-23 11:40:02
274
原创 main函数参数问题
main(int argc, char *argv[ ], char *env[ ])才是UNIX和Linux中的标准写法。argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数* argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数 argv[0] 指向程序运行的全路径名 argv[1] 指向在DOS命令行中执行程
2012-02-20 22:34:06
303
原创 Linux内核学习四库全书
关于内核学习我建议不要上来就读内核而是先了解内核的构成和特性,然后通过思考发现疑问这时再去读内核源码。即先了解概貌在读局部细节。而且内核分成好多部分,不要只是按照顺序去读,应该针对某一部分比如内存管理或进程管理横向读几本书,这样可以理解很全面。Linux Kernel 四库全书1. Linux内核设计与实现 Edition 2 2. Linux设备驱动 Edition 3
2012-02-05 14:53:22
309
原创 Linux网络编程必看书籍推荐
首先要说讲述TCP/IP的书很多,其中有3泰书很全。分别是《TCP/IP详解》三卷本,《用TCP/IP进行网际互连》三卷本,《TCP/IP指南》+《IPv6》四卷本其中TCP/IP详解的作者还写了另外2本经典著作,《Unix环境高级编程》,《Unix网络编程》作者W.Richard Stevens个人网站 http://www.kohala.com/大师作品部部经典,可惜1999
2012-02-05 14:52:00
283
原创 C语言经典著作导读
本人不是卖书的,我也不会给出任何购书链接,只是给C语言学习者推荐一条学习的方向。如果你喜欢看电子书网上很多,如果你喜欢纸质那么就买吧,经典的书值得收藏,是对版权的尊重! 0.《C语言大全第四版》作者: 赫伯特・希尔特译者: 王子恢 戴健鹏 等出版社: 电子工业出版社出版年: 2001-9-1页数: 560定价: 48.00装帧: 平装(无盘)ISB
2012-02-05 14:50:05
366
原创 bash快捷键
Ctrl-A 相当于HOME键,用于将光标定位到本行最前面Ctrl-E 相当于End键,即将光标移动到本行末尾Ctrl-B 相当于左箭头键,用于将光标向左移动一格Ctrl-F 相当于右箭头键,用于将光标向右移动一格Ctrl-D 相当于Del键,即删除光标所在处的字符Ctrl-K 用于删除从光标处开始到结尾处的所有字符Ctrl-L 清屏,相当于clear命令Ctrl-R
2012-01-31 10:23:14
284
原创 编写程序时键盘的使用技巧:
Home 光标跳到行首End 光标跳到行末PageUp 上翻一页PageDown 下翻一页shift 选中光标经过的地方del/ backspace 删除ctrl+Home
2012-01-16 00:19:12
803
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人