C/C++
C/C++编程等相关
ClouddRenn
一日复一日 功到自然成
展开
-
gcc debug level 说明
文章目录gcc -glevel 说明参考gcc -glevel 说明optiondescription-g0no debug information-g1minimal debug information,没有局部变量信息-gdefault debug information,包含局部变量信息-g3maximal debug information,包含宏定义信息参考[1] gcc -g flag[2] gcc debug options.原创 2020-07-17 10:43:37 · 1256 阅读 · 0 评论 -
centos7.5安装1050Ti NVIDIA Driver 和 CUDA9
前言,最近来了新的需求,需要研究下GPU加速下ffmpeg解码视频的性能情况。好吧,个人虽然对于硬件上的东西不太明白,不过还是摸着石头过河,一步一坑的走着。。。:)整个过程断断续续持续了两天左右,光是找能用的服务器就花了半天,结果发现不是不能用,只是我没装过,所以看上去1050Ti有点太大,找不到服务器有适合的PCIE插槽插入,结果在硬件组的大佬指导下才知道原来优酷的安装视频里面别人已经说过了...原创 2018-10-16 21:12:27 · 2037 阅读 · 1 评论 -
能自己写函数就别调用库函数 后者时间耗时更多
#include <ctime>#include <iostream>#include <cmath>using namespace std;const int N = 1024;int main(void){ int i, M; time_t t1 = time(NULL); for(int r = 0; r <原创 2018-07-11 14:54:59 · 749 阅读 · 0 评论 -
C中文件读取fread和fwrite 返回值等注意事项
#include size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); The function fread() read原创 2016-11-09 00:44:44 · 14464 阅读 · 0 评论 -
*p++的使用
这里主要是要考虑运算符优先级的使用先讲下优先级的部分1、最高级: 括号、数组下标运算符、函数调用运算符、各种结构成员选择运算符2、次一级:单目运算符 主要是注意单目运算符的结合方向:自右向左结合 所以这里的*p++就可以看成*(p++)了 《-------3、再次一级:双目运算符 算术运算符 》移原创 2016-11-06 16:17:45 · 1833 阅读 · 0 评论 -
strcpy复制一个字符串
看似很简单的题目,其实有着很多陷阱首先看一个错误的范例:char *r;strcpy(r,s);strcat(r,t);错误在于:r并未指定地址且未赋予内存空间好了,该如何做呢首先,肯定得考虑内存的分配 使用malloc 显式调用分配内存 则也得显式调用释放内存free不多说了 上代码char *r;r=malloc(strlen(s)+str原创 2016-11-06 16:10:30 · 804 阅读 · 0 评论 -
C语言之位段使用详解
什么是位段在前面各章中, 我们已经讨论过字节概念了。在大多数的计算机系统中, 一个字节是由八个更小的, 称作为位的单位组成的。位是比字节更小的单位。位只有两个值, 1 或 0 。因此, 存储在计算机存储器中的一个字节可以看成由八个二进制数字形成的串。例如, 一个存放值 36 的字节是八个二进制数字的串: 可以表示成 00100100。 存入值24 的字节可以表示成 000101原创 2016-11-03 00:23:38 · 11126 阅读 · 1 评论 -
xml流提取
//这里的头标签 //尾标签 形如 //==================================================================#include#include#include //函数功能:扫描字符串到指定位置处的头尾标签,进行比较//传入参数:// xml:字符串首地址// pos:查询结束位置原创 2015-12-31 22:20:36 · 340 阅读 · 0 评论 -
GCC编译流程分析
以helloworld为例分析gcc编译过程:#includeint main(){ printf(“Hello World\n”); return 0;}通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,生成可执行文件a.out实际上gcc hello.c可以分解为4个步骤,分别是预处理(Preprocess),编转载 2015-10-24 10:09:01 · 354 阅读 · 0 评论 -
const相关的一道面试题
以下3个有什么区别char * const p; char const * p;const char *p; #includevoid test(){ /* *主要测试const的是 *地址还是地址里的数据 */char x='A';char * const p=&x; //p=0x00050000;//errror,ro,不能改地址char c=原创 2015-10-22 13:50:14 · 444 阅读 · 0 评论 -
面试题 求一个字节中的1的位数
题目描述:对于一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数,要求算法执行效率尽可能地高。先看看我自己的答案(方法一):unsigned char Count(unsigned char byt){unsigned char num=0;while (byt){num += (byt & 0×01);byt >>= 1;}ret转载 2015-10-17 18:02:29 · 2281 阅读 · 0 评论 -
C语言编程—清空键盘缓冲区,Linux下完美实现
/**清空键盘缓冲区很多种方法,如用fflush(stdin);rewind(stdin);等,但是在linux这些都不起作用,*发现setbuf(stdin, NULL);就能直接清空键盘缓冲区了。*/#include //清空缓冲区int main(){ char ch1; char ch2; scanf("%c", &ch1); print转载 2015-10-17 12:38:48 · 962 阅读 · 1 评论 -
c语言知识点复习
1.结构体的赋值struct _STNODE{int iNO;}stNode;stNode node1={123};2. 当结构体作为形参的时候,注意传进去的只是克隆,要传指针才可以改变该结构体实例数据3.优先级 运算符的注意:. 优先于 *4.union点表示法typedf union {int iNO;doub原创 2015-10-01 13:54:41 · 482 阅读 · 0 评论 -
消息队列再整理二
一个消息队列是一个消息的链表,存储在内核里,并由一个消息队列标识符标识。我们将只称消息队列为一个队列,称它的标识符为一个队列ID。SUS包含了一个替代的IPC消息队列的实现,在实时扩展的消息传递选项里。我们不在本文包含实现扩展。一 个新的队列被创建或一个已有队列被打开,通过msgget。新的消息被加入到一个队列的尾部,通过msgsnd。每个消息有一个正的长整转载 2015-08-05 07:21:30 · 1156 阅读 · 0 评论 -
消息队列再整理
ftok()#include #include 函数原型: key_t ftok( const char * pathname , int proj_id );参数: pathname 就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽 然为int,但是只有8个比特被使用(0-255)。转载 2015-08-05 07:16:55 · 398 阅读 · 0 评论 -
c字符串处理函数
函数名: strcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include #include int main(void) { char string[10]; char *str1 = "abcdefghi"; stpcpy(s转载 2015-08-02 20:15:25 · 397 阅读 · 0 评论 -
精灵进程的创建
//代码1--实现延时--由于后台运行可能感觉不明显//想要结束它,我只想到关机重启;查看的话,ps -ef#include #include #include #include #include #include #include #include #include /* * 精灵进程的实现 */原创 2015-08-02 19:58:06 · 506 阅读 · 0 评论 -
printf输出颜色
在Linux终端下调试程序时,有时需要输出大量信息。若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据。 终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式下的系统显示功能,与具体语言无关。 转义序列以控制字符'ESC'开头。该字符的ASCII码十进制表示为27,十六进制表示为0x1B,八进制表示为033。多数转义序列超过转载 2015-08-02 19:34:13 · 597 阅读 · 0 评论 -
进程间通信
传统进程间通信方式 无名管道 pipe 有名管道 fifo 信号 signalsystem V IPC对象 共享内存 share memory 消息队列 message queue 信号灯 semaphoreBSD 套接字 socket管道是基于文件描述符的通信方式。 无名管道 int pip转载 2015-08-02 12:27:48 · 253 阅读 · 0 评论 -
三个同步与互斥问题之生产者与消费者
#include#includepthread_mutex_t mutex;#define Max 10pthread_cond_t pro;pthread_cond_t con;int buffer=0;//全局变量----一开始为0,只有生产者可以执行void deal_produce(void *arg){//消费---int i原创 2015-08-01 14:13:20 · 601 阅读 · 0 评论 -
文件内容的清除
想到两种方法-1.用空格覆盖所有内容(有问题,内容全变成空格) int fd=open(filename,O_RDWR) struct stat stBuf; stat(filename,&stBuf); len=stBuf.st_size; char *szBuf=(char*)malloc(len); write(fd,szBuf,len)原创 2015-08-01 13:55:30 · 505 阅读 · 0 评论 -
CPU大小端字节序的检测
机器的字节序有两种,即大端字节序和小端字节序。 大端字节序:在内存中,低地址存放数据的高位,高地址存放数据的低位 小端字节序:在内存中,低地址存放数据的低位,高地址存放数据的高位 如例:定义数据 a = 0x01020304 小端方式:01 02 03 04 大端方式:04 03 02 01那么转载 2015-07-27 18:21:37 · 971 阅读 · 0 评论 -
Udp心跳包代码
//1.client.c#include#include #include#include#include#include #include #include#include#include #include #include #include #include #include#define IP "127.0.0.1"原创 2015-07-26 19:53:06 · 3252 阅读 · 0 评论 -
TCP三次握手详解!
TCP(Transmission Control Protocol) 传输控制协议三次握手TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置)转载 2015-07-21 21:10:13 · 617 阅读 · 0 评论 -
ubuntu 软件推荐
一.优化大师类的清理软件ubuntu tweak 安装 1.命令方式------打开终端运行下面的命令sudo add-apt-repository ppa:tualatrix/ppasudo apt-get updatesudo apt-get install ubuntu-tweak 2.官网上下载deb包双击就OK了ubuntu-tweak.com原创 2015-07-17 09:01:08 · 450 阅读 · 0 评论 -
编写自己的Shell解释器
==================================================START========================================================摘要:本期的目的是向大家介绍shell的概念和基本原理,并且在此基础上动手做一个简单shell解释器。同时,还将就用到的一些 linux环境编程的转载 2015-07-16 10:04:42 · 524 阅读 · 0 评论 -
全局变量与静态变量
static 声明的变量在C语言中有两方面的特征:1.变量被放在程序的全局存储区中,这样在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。2.变量用static告知编译器,自己仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips:A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;B.若全局变量仅由单转载 2015-07-10 09:50:00 · 419 阅读 · 0 评论 -
C语言宏定义
1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数 差异,方便移植。 typedef unsigned char boolean; /* Boolean value type.转载 2015-07-09 15:58:28 · 378 阅读 · 0 评论 -
FFMPEG获取视频关键帧并保存成jpg图像
//source: keyframe.cpp#include <iostream>#include <cstdio>#include <cstring>#define __STDC_CONSTANT_MACROSextern "C"{#include <libavutil/imgutils.h>#include <libav...原创 2020-04-14 11:27:39 · 1927 阅读 · 0 评论 -
记NVIDIA多路视频解码处理的几个问题和解决方案
背景当前项目需求是使用GPU进行多路视频解码处理,解码帧继续进行ORB特征提取,然后生成vlad聚合特征,最后对其数据进行检索问题NVIDIA Video Codec库提供的解码实例中对于头部有些许问题的视频无法处理这个还没有解决 想要从ffmpeg入手看看能否搞定 因为解封装的操作是ffmepg库的接口调用实现NVIDIA多线程处理结束后从GPU取出cv::cuda::G...原创 2020-03-24 21:43:27 · 1509 阅读 · 0 评论 -
openmp处理vector
背景最近又需要进行性能优化了,偶然接触到一个openmp的相关只是 学习了2天 感觉受益匪浅主要对openmp如何进行多线程的方便设计很感兴趣问题项目中使用了openmp,对一个for循环中的vector进行了push_back的操作导致了段错误看了下stackoverflow的相关问题的解释 是由于push_back带来的vector内存扩充而引起的解决思路及参考代码定义vecto...原创 2020-03-19 21:10:21 · 1898 阅读 · 0 评论 -
关于c++拷贝构造函数和类初始化列表的一些想法
#include <iostream>using namespace std;class eleA{ int x; public: eleA(int m):x(m){} eleA(eleA &a) { this->x = a.x; cout << "eleA copy construction \n"; } };class...原创 2020-03-19 20:54:07 · 355 阅读 · 0 评论 -
基类派生类实虚函数
#include <iostream>using namespace std;class Base{protected: int x;public: Base(int n):x(n){} void display(){ cout << __FUNCTION__ << " Base: " << x << endl; ...原创 2020-03-18 20:52:45 · 232 阅读 · 0 评论 -
opencv3.4.4 opencv_contrib 3.4.4 源码编译
tar zxf opencv-3.4.4.tar.gztar zxf opencv_contrib-3.4.4.tar.gzcd opencv-3.4.4mkdir buildcd buildcmake -DOPENCV_ENABLE_NONFREE:BOOL=ON -DOPENCV_EXTRA_MODULES_PATH=/home/reny/opencv/opencv_contrib...原创 2020-01-09 19:17:05 · 479 阅读 · 0 评论 -
深入理解C++动态绑定和静态绑定
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误,需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:[C++] view p转载 2016-11-02 00:36:34 · 185 阅读 · 0 评论 -
std::map里面的erase(iterator)调用注意细节
方法一:[cpp] view plaincopystd::map mapTest; bool TestVal(const std::string & val); ...... std::map::iterator it = mapTest.begin(); while(it != mapTest.end())转载 2016-11-02 00:29:19 · 4339 阅读 · 0 评论 -
C++虚函数实现原理
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我转载 2016-10-31 23:15:52 · 284 阅读 · 0 评论 -
计算二进制‘1’位数
/*对于一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数,要求算法执行效率尽可能地高。*/#include#includevoid test1(){ printf("请输入一个整数:"); int a=0; scanf("%d",&a); setbuf(stdin,NULL); int num=0; int tmp=a; while(a) { if原创 2015-11-05 19:42:07 · 445 阅读 · 0 评论 -
C++ 容器
/* @note: 学习C++泛型编程 @date: 2017-11-16 @author: cloudren */#include <iostream>#include <algorithm>#include <string.h>#include <vector> #include <deque> #include <list>#include <stack>#inclu原创 2017-11-20 21:26:54 · 226 阅读 · 0 评论 -
C++ vector中指针元素内存处理
#include<iostream>#include<vector>using namespace std;struct A{ A(int id=10):m_id(id){} void show(){ cout<< "m_id is " << m_id <<endl; } int m_id;};int main(void){ vector原创 2017-12-01 16:08:37 · 2084 阅读 · 0 评论