C/C++
文章平均质量分 68
feixiaku
这个作者很懒,什么都没留下…
展开
-
Linux 段错误详解
By Falcon ofTinyLab.org 2015/05/12目录1背景2什么是段错误3段错误日志分析3.1例子3.2段错误信息3.3段错误分析4常见段错误举例4.1scanf 参数:把 &i 写为 i4.2sprintf/printf 参数:%d/%c 写成 %s4.3数组访问越界4.4写只读内存4.5转载 2016-04-06 20:59:26 · 3935 阅读 · 0 评论 -
Linux + Eclipse 配置交叉编译环境
最精在研究u-boot,之前用的编译方法是在windows下用vs进行就该,然后用虚拟机里的ubuntu进行编译,中间使用共享文件夹。后来觉得太麻烦了,干脆直接在linux下进行修改和编译,因此安装了Eclipse for c/c++ developer。下面介绍两种交叉编译环境搭建的方法: 一.使用工程中自带的Makefile。 1.选择New->Project,而不是Import转载 2014-09-18 12:26:31 · 4098 阅读 · 0 评论 -
C++多线程
转载于:http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438288.htmlC++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件、、、等用于支持转载 2014-02-27 16:23:16 · 1267 阅读 · 0 评论 -
部分转载:如何实现C和C++函数互相调用
〈一〉如何实现C中调用C++如何用c语言调用c++做成的动态链接库, 转至http://blog.donews.com/xzwenlan/archive/2005/05/31/405799.aspx链接库头文件://head.hclass A{ public: A(); virtual ~A();转载 2014-01-16 21:44:49 · 498 阅读 · 0 评论 -
模板函数问题
在VC下定义一个1template2list::iterator seqSearch( list::iterator first, list::iterator last, const T& target) 3{ 4 list::iterator iter = first; 5 while (iter !=转载 2013-12-27 00:25:28 · 493 阅读 · 0 评论 -
valarray函数库
valarray类用法1. apply 将valarray数组的每一个值都用apply所接受到的函数进行计算2. cshift 将valarray数组的数据进行循环移动,参数为正者左移为负就右移3. max 返回valarray数组的最大值4. min 返回val转载 2013-12-27 00:23:34 · 814 阅读 · 0 评论 -
queue用法
queue用法1. back 返回队列最后一个元素引用2. empty 判断队列是否为空3. front 获得队列最前面一个元素引用4. push 在队列尾添加一个数据5. pop 删除队列头的一个数据6. size 队列中元素个数转载 2013-12-27 00:22:30 · 477 阅读 · 0 评论 -
Stack用法
Stack用法1. empty 判断堆栈是否为空2. pop 从堆栈里面弹出一个数据3. push 向堆栈压入一个数据4. size 返回当前堆栈长度(即内部数据个数)5. top 得到堆栈栈顶数据转载 2013-12-27 00:21:47 · 532 阅读 · 0 评论 -
Vector用法
Vector用于存储对象数组常用方法1.push_back 在数组的最后添加一个数据2.pop_back 去掉数组的最后一个数据3.at 得到编号位置的数据4.begin 得到数组头的指针5.end 得到数组的最后一个单元+1的指针6.front转载 2013-12-27 00:20:48 · 542 阅读 · 0 评论 -
C++中线程函数中方访问成员变量
创建线程时,线程函数如果要设置成类的成员函数,则必须是静态成员函数,在此函数中不能使用非静态成员变量,如果要使用非静态成员变量的话,比如在MFC中,最好不要将MFC类的指针传递给线程函数,最好是传句柄给线程,创建线程用AfxBeginThread,把this作为第二个参数传递。 线程函数是回调函数,因此它必须是静态成员函数或者是类外部声明的全局函数。全局线程函数:UINT Thre转载 2013-12-27 00:19:14 · 1720 阅读 · 0 评论 -
ASCII码对照表
ASCII码对照表下表列出了字符集中的 0 - 127。 代码字符代码字符代码字符代码字符0 32[空格]64@96`1 33!65A97a2 34"66B98b3 35#67C99c转载 2014-08-22 11:07:07 · 714 阅读 · 0 评论 -
select函数详解及应用
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方转载 2014-09-10 11:55:30 · 463 阅读 · 0 评论 -
UDP点对点通讯、广播通讯、多播通讯
IP地址的简介:IP地址是由32位二进制组成:网络号+主机号。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址分为A、B、C、D、E5类。常用的是B和C两类。一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就转载 2014-09-03 14:44:44 · 1041 阅读 · 0 评论 -
使用Nginx+FFMPEG搭建HLS直播转码服务器
目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPEG转码多码率功能。一、准备工作模块:nginx-rtmp-module-master(支持rtmp协议)下载地址:http://nginx.orghttps://github.com/arut/nginx-rtmp-module1、安装依赖包:#yum -y install gcc glibc gl转载 2016-04-05 22:02:55 · 972 阅读 · 0 评论 -
善用GDB 调试一些函数栈被毁坏的问题
最近差一些问题,这些问题的现象一开始难以解释,函数的参数地址在函数内部被传递给另外的函数,然后发现地址发生了改变,这样的情况称之为函数的栈被毁坏,导致无法重入。然后被调用的函数里面,访问了非法的地址导致了segment fault,产生core dump文件。问题比较棘手查了一些文件,准备从gdb的栈保护设置开始着手。1) 编译的时候添加编译选项-fstack-pr转载 2016-04-05 20:07:36 · 2262 阅读 · 0 评论 -
关于一些core dump的问题,makefile以及gdb的使用问题
相信在linux下写程序可以认为是一种享受,但是经验的积累是如此的重要,现在工作的时候很少有时间去积累自己的知识,这正是我从学校走出来之后得到的切身体会。最近一段时间仍然再忙关于ipv6的开发任务,马上就要面临又一次大的integration test,做好自己的代码测试看来是尤为重要,特别是在别人的代码没有完成的情况下,就必须想尽一切办法把自己的代码完善,然后去模拟输出,输入的来测试好自己的代码转载 2016-04-05 20:06:37 · 1220 阅读 · 0 评论 -
c内存系列(一):缓冲区溢出
转自:http://blog.chinaunix.net/uid-20340944-id-1702253.html在这里强调一下,想完全看的懂这篇文章,至少需要具备一定的汇编语言,C语言和LINUX的基础。 缓冲区溢出”在英文中可以解释为:buffer overflow,buffer overrun,smash thestack,trash the stack,scribb转载 2016-04-04 22:32:25 · 921 阅读 · 0 评论 -
初识缓冲区溢出
在改造一个ota_ts_generator工具时,调试时,发生如下错误: ./app ?123**** stack smashing detected ***: ./app terminated**======= Backtrace: =========**/lib/tls/i686/cmov/libc.so.6(转载 2016-04-04 22:12:50 · 455 阅读 · 0 评论 -
GDB内存断点(Memory break)的使用举例
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! GDB内存断点(Memory break)的使用举例 本文是一篇使用GDB设置内存断点的例子。 1. 源程序 文件名:testMemBreak.c#include #includ转载 2016-04-04 22:05:22 · 4184 阅读 · 0 评论 -
通过IP或socket获取对方的MAC地址
1。通过已经连接的socket文件获取: [cpp] view plaincopyint getpeermac( int sockfd, char *buf ) { int ret =0; struct arpreq arpreq; struct sockaddr_in dstadd_in;转载 2014-09-28 21:25:53 · 2845 阅读 · 0 评论 -
C/C++控制台带颜色功能输出
在UNIX字符界面下显示有8种不同颜色,printf打印基本格式如下: printf("\x1b[%d;%dm%s\x1b[%dm", backcolor, frountcolor, str, control);分别的表示如下: 第一个%d:backcolor表示显示字符串的背景颜色,其值如下表所示: 第二个%d:frountcolor表示字体颜色转载 2014-09-28 12:38:06 · 5298 阅读 · 0 评论 -
C++ string用法归纳
本文转自:http://blog.sina.com.cn/s/blog_9b9105f40100zxpa.html (1)string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化(2)string类的字符操作:const char &转载 2014-09-28 12:42:19 · 407 阅读 · 0 评论 -
C++中string类
目录(?)[-]函数find_first_of和 find_last_of 执行简单的模式匹配字符串中提取连续字符序列既子串添加和删除字符串c_str返回c语言风格字符串的地址分离字符串路径的方法string 类提供字符串处理函数,利用这些函数,程序员可以在字符串内查找字符,提取连续字符序列(称为子串),以及在字符串中删除和添加。我们将介绍一些主要函数。1.转载 2013-12-27 00:07:34 · 545 阅读 · 0 评论 -
static在C和C++中的用法和区别
static主要有三个作用:(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, register。其中register不常用到,下面主要说说auto和static的区转载 2013-05-19 15:19:35 · 468 阅读 · 0 评论 -
VC 项目中可以使用的路径宏
原文地址:http://blog.csdn.net/collin1211/article/details/2483316VC 项目中可以使用的路径宏:宏说明$(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(Referenc转载 2013-04-02 10:01:52 · 709 阅读 · 0 评论 -
测试一下你的C语言水平
整个测试遵循以下的约定:u 假定在所有的程序中必须的头文件都已经被正确包含。考虑如下的数据类型:u char 为1个字节u int 为4个字节u long int 为4个字节u float 为4个字节u double 为个8字节u long double 为 8个字节u转载 2013-03-31 19:17:40 · 977 阅读 · 0 评论 -
C转义字符表
转义字符意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS) ,将当前位置移到前一列008\f换页(FF),将当前位置移到下页开头012\n换行(LF) ,将当前位置移到下一行开头01原创 2013-04-01 16:21:06 · 943 阅读 · 0 评论 -
sscanf函数的高级用法
大家都知道sscanf是一个很好用的函数,利用它可以从字符串中取出整数、浮点数和字符串等等。它的使用方法简单,特别对于整数和浮点数来说。但新手可能并不知道处理字符串时的一些高级用法,这里做个简要说明吧。 1. 常见用法。char str[512] = {0}; sscanf("123456 ", "%s", str); pr转载 2013-03-31 19:15:55 · 486 阅读 · 0 评论 -
堆和栈的区别
一直就搞不清出这个问题,今天上网想起来,随即搜了搜,找到了一些资料。不知源作者是谁。姑且“拿来主义”一下,呵呵。一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放转载 2013-03-31 19:14:37 · 486 阅读 · 0 评论 -
递归和迭代的区别
递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.使用递归要注意的有两点:1)递归就是在过程或函数里面调用自身;2)在使用递归时,必须有一个明确的递归结束条件转载 2013-01-11 16:09:18 · 455 阅读 · 0 评论 -
如何阅读源代码
分析一个源代码,一个有效的方法是: 1、阅读源代码的说明文档,比如本例中的README, 作者写的非常的详细,仔细读过之后,在阅读程序的时候往往能够从README文件中找到相应的说明,从而简化了源程序的阅读工作。 2、如果源代码有文档目录,一般为doc或者docs, 最好也在阅读源程序之前仔细阅读,因为这些文档同样起了很好的说明注释作用。 3、从makefile转载 2013-01-11 16:11:06 · 447 阅读 · 0 评论 -
typedef和define的区别
typedef关键字和#define有一种共同的作用,为一种类型创建自定义的名字,如typedef int myint;#define myint int是一样的,但是他们之间仍然有很大的区别。typedef语句是在编译过程中被解析的,而#define是在编译之前的预处理过程中被解析的。#define所进行的只是对自定义别名的简单替换,而typedef则要灵活得多。总的来说,typ转载 2013-01-07 15:36:46 · 381 阅读 · 0 评论 -
编程中异或的妙处
1. 在1000个数中删除一个数,要求删除这个数的位置。求法:将删出前的每个数异或得到a;删掉后的所有数异或得到b;a^b即为删掉的数。原理a=a^x^x.2.交换两个变量的位置A-B且不占用其他空间(3次异或)A:1010 B:1100A=A^B (A:0110,B:1100)B=A^B(A:0110,B:1010(原A))A=A^B(A:1100(原B),B:1原创 2012-12-18 00:31:10 · 1145 阅读 · 0 评论 -
Union和Struct
转载于:http://blog.csdn.net/cdm_xu/article/details/4212180 联 合(union) 1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名;转载 2013-04-24 10:27:19 · 496 阅读 · 0 评论 -
文件操作函数
1. int fseek(FILE *stream, long offset, int fromwhere);函数描述:函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offse原创 2013-04-01 16:11:59 · 517 阅读 · 0 评论 -
解决方案(.sln)文件
原文:Solution (.Sln) File关于VS2008和VS2010中.sln文件(解决方案文件)的介绍MSDN中只有英文版,现翻译供读者参考,希望对您有帮助。水平有限文中难免有错误,欢迎大家指正,拜谢~解决方案就是Visual Studio中用来组织项目的结构。他的作用类似于VB6.0中的Windows程序组(.vbg)文件以及VC6.0中的项目工作区(.dsw)文件。解决方转载 2013-04-24 10:42:40 · 2709 阅读 · 0 评论 -
C语言中##和#的用法
碰到一道笔试题:读程序,写出结果#define STRCPY(a, b) strcpy(a ## _p, #b)int main(){ char var1_p[20]; char var2_p[30]; strcpy(var1_p, "aaaa"); strcpy(var2_p, "bbbb"); STRCPY转载 2013-05-05 00:23:37 · 732 阅读 · 0 评论 -
typedef用法
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别转载 2013-04-18 16:21:15 · 521 阅读 · 0 评论 -
pthread学习笔记
转载于:http://www.cnblogs.com/xfiver/archive/2013/01/23/2873725.html 线程学习P287-P297?#include //新建线程int pthread_create(pthread_t *restrict tidp, const pthread_attr_t转载 2013-04-26 13:27:53 · 585 阅读 · 0 评论 -
C语言中restrict关键字
C99中新增加了restrict修饰的指针:由restrict修饰的指针是最初唯一对指针所指向的对象进行存取的方法,仅当第二个指针基于第一个时,才能对对象进行存取。对对象的存取都限定于基于由restrict修饰的指针表达式中。 由restrict修饰的指针主要用于函数形参,或指向由malloc()分配的内存空间。restrict数据类型不改变程序的语义。编译器能通过作出restri转载 2013-04-26 12:56:18 · 1018 阅读 · 2 评论