C/C++
文章平均质量分 78
乱红飞
用技术追赶世界潮流,从人文历史把握人生方向。
展开
-
进大厂必备的C/C++技能点全部总结好了
总的来看,大的方便有以下几个编程语言基础数据结构与算法计算机网络操作系统每个方面的核心问题编程语言基础new和malloc的区别以及底层实现原理怎么理解static? static 在C和C++中的区别?怎么理解const? const 在C和C++中的区别?c++虚函数原理智能指针c语言如何实现c++对象以及私有成员c++多态实现STL中的vector怎么扩容虚函数指针的初始化过程c++11原子变量介绍c++11特性有哪些?怎么理解重载与重写怎么理解c++中的s原创 2021-03-29 10:12:14 · 851 阅读 · 0 评论 -
虚函数原理详解
虚函数虚函数,虚指针和虚表虚函数:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。虚指针和虚表:存在虚函数的类都有一个一维的虚函数表叫做虚表。每一个类的对象都有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。虚函数实现原理编译器在编译的时候,发现Base类中有虚函数,此时编译器会为每个包含虚函数的类创建一个虚表(即vtable),该表是一个一维数组(而不是一个链表),在这个数组中存放每个虚函数的地址。由于Base类和Derive类都包含了一个虚函数fu原创 2021-03-25 10:22:52 · 2166 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析陈皓http://blog.csdn.net/haoel前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关转载 2021-03-25 10:02:19 · 118 阅读 · 0 评论 -
一个巨坑,多线程中静态变量的错误使用问题
问题背景C语言Windows 音视频开发问题描述在做多客户端视频解码测试(使用Intel GPU解码)的过程中,为了方便编写测试demo,使用了读取h264源文件的方法,其中有一个获取一帧数据的接口get_frame(FILE *fp,unsigned char ** pbuf),;在测试过程中打开一路视频,一切正常,打开16路就开始花屏,一开始,我以为是GPU的解码能力受限,分别测试14路,12路……2路,居然都是花屏,这让我头大啊。明显的GPU资源的占用情况,还很良好,远远没有爆;分原创 2021-02-02 19:42:54 · 1355 阅读 · 0 评论 -
深刻理解C指针的存储位置
一下将要说明一下指针存在栈空间还是堆空间的话题:废话少说,直接上代码#include <stdio.h>#include <stdlib.h>char *sc_malloc(int size){ char *p = (char*)malloc(sizeof(char)*size); return p;}void sc_free(char *p){...原创 2020-05-08 16:37:42 · 8275 阅读 · 4 评论 -
二叉树四种遍历方式
/* 二叉树的四种遍历方式*/#include #include using namespace std;// 二叉树节点的定义class TreeNode{public: char val; //int val; TreeNode *left, *right; TreeNode(int val){ this->val = val转载 2016-07-08 22:27:35 · 1748 阅读 · 0 评论 -
二叉树的遍历 (代码)
#include#include#include#include#include#define TRUE 1#define FALSE 0#define BEGIN 0#define ALPHA 1#define LEFT_BRACKET 2#define COMMA 3#define RIGHT_BRACKET 4#define LEFT_CHI原创 2016-07-08 22:17:23 · 478 阅读 · 0 评论 -
趣谈——深拷贝和浅拷贝
#include#include struct string{ char *p; int length;};void main(){ struct string str1; str1.length = 10; str1.p = (char *)malloc(sizeof(char)* 10); strcpy(str1.p, "hello"); printf("str原创 2016-04-20 20:34:43 · 384 阅读 · 0 评论 -
线程共享的环境
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。转载 2016-04-20 19:35:54 · 405 阅读 · 0 评论 -
源代码——三元组实现稀疏矩阵及其转置
//三元组数值有一个特点:那就是在不同位置上的行值相同的元素//一定是按照列值升序出现的。#define _CRT_SECURE_NO_WARNINGS#include #include #include typedef struct TRIPLE//三元组成员{ int row; int col; int value;}TRIPLE;typedef struct T原创 2016-09-05 17:55:16 · 5334 阅读 · 2 评论 -
带头结点的链表去重
带头结点的链表去重BOTTOM_REC_T *ListDuplicateRemoval(BOTTOM_REC_T *pNode){ BOTTOM_REC_T *p, *q, *r; p=pNode->next; while(p) { q=p; while(q->next) { if(!strcmp原创 2017-03-22 10:14:52 · 442 阅读 · 0 评论 -
C语言多线程调用python
在做目标检测过程中,使用C语言实现上层从摄像头取流并截取帧的过程,目标检测使用Facebook开发的detectron开源项目(python). 整个流程获取待检测数据—>检测—>返回结果,那么上层获取的数据需要传递给python处理,这个时候就需要使用C语言调用python的接口。 本示例代码,主要介绍了多线程中C调python的基本流程。详情请参见官方网站。C代码...原创 2018-04-28 17:16:39 · 1890 阅读 · 0 评论 -
linux 多进程编程详解
1.创建进程fork()1.1头文件#include<unistd.h> #include<sys/types.h> 1.2函数原型pid_t fork( void);pid_t 是一个宏定义,其实质是int 被定义在#include1.3 返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回...原创 2018-08-29 20:24:46 · 15207 阅读 · 4 评论 -
【多进程】如何使用多进程处理多个任务
多进程创建代码以下代码用以创建两个子进程处理任务,通过基本的代码框架讲解如何使用fork创建很明确的子进程处理任务。 int groupCount = 2; char *pTaskGroup[2]; pid_t pid = -1; for (int i = 0; i < groupCount; ++i) { pid = fork(); LogInfo("pid -----...原创 2019-03-21 17:54:10 · 964 阅读 · 0 评论 -
【Dlib】中图像数据格式转换集锦
Dlib是一个包含机器学习算法的C++开源工具包。在使用过程中胡遇到各种图像格式转换接口,为了在之后的使用过程中方便查询,现在将平时用到的接口再这里做一个集锦,后续不断更新。yuv转matrix/********************************************************************************功能 : YUV数据转转换为ma...原创 2019-04-17 19:21:34 · 700 阅读 · 2 评论 -
AI移动端优化
原文地址:https://zhuanlan.zhihu.com/p/65436463一、前言数学是科学的基础,一般涉及算法的项目拆分到底层也都是基本的科学计算:单个数字、数组、各种维度矩阵之间的操作。BLAS 是一个数学计算库的标准,定义了一套矩阵数组操作的API,例如: sgemm float矩阵乘法、sgemv float矩阵乘以数组… 诸如此类。OpenBLAS 是BLAS标准的一种具...转载 2019-07-10 20:18:38 · 773 阅读 · 0 评论 -
结构体大小的计算
struct info1{ char c; //4 int ch; //4 int a; //8 double m; // 8 24}; //sizeof(info1); 结果是 24struct info2{ short tl; //2 char a; //2 char b[9]; //10}; //sizeof(info2); 结果是 14原创 2016-04-20 17:21:46 · 460 阅读 · 0 评论 -
static 和const关键字的用法总结
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模原创 2016-03-25 16:28:07 · 1811 阅读 · 1 评论 -
为什么头文件这么定义
为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh#define __INCvxWorksh //防止被重复引用#ifdef __cplusplusextern "C" {#endif /*...*/#ifdef __cplusplus}#endif #endif /* __INCvxWorksh */ 函数被C原创 2016-03-25 16:35:56 · 385 阅读 · 0 评论 -
控制桌面窗口移动(源代码)
控制应用程序在桌面移动 struct pos{int x;int y;};struct pos pos1[8] = { { 1000, 200 }, { 1000, 300 },{ 200, 600 }, { 660, 400 },{ 1300, 500 }, {400, 600},{ 900, 900 }, {1000, 1200}}; vo原创 2016-03-25 16:38:13 · 804 阅读 · 0 评论 -
Detours实现劫持
劫持:第一步:编译Detours工程。在安装目录C:\Program Files\Microsoft Research\Detours Express 3.0\src目录下的是工程的源文件。(1)打开VS2013命令行工具,进入src目录。(2)使用nmake(linux下是make)命令编译生成静态库劫持的原理就是把目标函数的指针的指向修改为自定义函数的地址。函数是放原创 2016-03-25 16:43:19 · 631 阅读 · 0 评论 -
静态库的使用方法
静态库的使用简单介绍原创 2016-03-25 16:50:18 · 5406 阅读 · 2 评论 -
字符串的封装
这里的代码主要实现了字符串常用的所有操作,在不使用库函数的前提下,自己实现库函数的功能,可以很好的锻炼自己的编程能力和逻辑思维能力。原创 2016-04-27 16:40:50 · 4912 阅读 · 1 评论 -
队列的封装
这里的代码实现了队列基本操作的封装,如果是初学者的话,非常适合用这里的代码来学习研究。原创 2016-04-26 10:54:58 · 481 阅读 · 1 评论 -
【加密解密】 文件的加密解密 <含源代码>
这段代码主要实现了讲一个TXT文件按照一定算法加密,然后解密的过程。原创 2016-04-29 16:17:45 · 3772 阅读 · 0 评论 -
【加密解密】对字符串的加密解密
最基础的字符串的加密解密。可以通过这个简单的例子,理解加密解密的思想。而字符串的加密解密,重点在于对字符串的处理。原创 2016-04-29 09:46:08 · 1015 阅读 · 0 评论 -
fprintf(); fscanf(); 向文件中写入读出数据
使用fprintf(); fscanf(); 向文件中写入读出数据。原创 2016-04-30 10:59:46 · 2648 阅读 · 0 评论 -
【静态库&动态库】用最简单的例子说明静态库动态库的操作
这里的代码是学习认识静态库动态库最简单易易懂的例子。原创 2016-04-30 11:09:35 · 543 阅读 · 0 评论 -
【链式栈】链式栈的封装<源代码>
这里的代码 主要实现了链式栈的基本操作,包含初始化,入栈,出栈,释放。原创 2016-05-01 13:23:45 · 622 阅读 · 0 评论 -
C语言中%d,%o,%f,%e,%x的意义
原文地址:http://blog.csdn.net/jack__h/article/details/4932511格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。 格式字符有d,o,x,u,c,s,f,e,g等。 如%d整型输出,%ld长整型输出,%o以八进制数转载 2016-05-01 15:59:06 · 24790 阅读 · 0 评论 -
【链式队列】接口的封装
这里的代码主要实现了链式队列的基本接口封装,很适合C语言进阶学习,有助于提高编程能力。原创 2016-05-01 20:43:32 · 370 阅读 · 0 评论 -
链表接口的封装
实现链表的基本功能,包括增加,删除,查找,排序,逆转。并对接口进行了封装。原创 2016-04-18 20:01:15 · 693 阅读 · 0 评论 -
将大数据载入内存中检索字符串
这段代码主要实现了将一个几Gb大小的TXT文件载入到内存中,然后再利用内存的快速运算能力,查找字符串。原创 2016-04-18 22:02:55 · 1281 阅读 · 0 评论 -
gets()、puts()和fgets()、fputs() 的区别。
gets()、puts()和fgets()、fputs() 的区别。原创 2015-10-21 16:59:50 · 1999 阅读 · 1 评论