自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 AVFrame的数据填充方式

我们知道平时使用AVFrame这个数据结构时,首先需要调用av_frame_alloc()对其进行初始化,初始化后的数据里data数组和buf数组都是空的,也就是说初始化后不会填充一个默认图像数据(毕竟初始化时不需要知道图片的任何信息)。我平时使用的AVframe填充数据的方式为av_image_fill_arrays,先自己申请一段内存空间tmpBuffer,然后填充到目标frame中,但是这种方式常常会由于疏忽释放tmpBuffer而导致内存泄漏。//填充int frameSize = av_i

2020-12-30 16:49:43 4541

原创 字节序学习

字节序是指当一个数据的长度超过一个字节时的存储顺序。比如一个int型的数据,所占的字节数为4,那么在存储的时候第一个字节的地址为0x00B8F9F0,这个int数据占用的四个字节的地址为0x00B8F9F0,0x00B8F9F1,0x00B8F9F2,0x00B8F9F3。但是对于a的四个字节的存储顺序,在不同的处理器上可能是不同的。对于存储顺序,分为大端序和小端序小端序(Little-Endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。大端序(Big-Endian):高位字

2020-10-10 11:28:21 212

原创 void指针

指针指向的是内存中的一个地址,对于指针的操作通常包括解引用和算数运算指针的解引用是从指针指向的地址开始向后读取,读取的长度为指针的类型,例如,int型指针解引用时向后读取4个字节,double型则是向后读取8个字节。指针的运算,比如int *a;a++;这个操作是将指针指向的地址向后移了一个数据类型对应的长度,这个例子中,指针向后移了sizeof(int)这么多个字节同样void指针也是指向一块存储区域的开头,只不过它没有固定的类型。一方面,由于没有固定的数据类型,所以可以不用强制类型转换地

2020-10-10 11:26:12 210

原创 C和C++文件的写入和读出方式

在C中提供了对设备上文件调用的底层接口文件写入C中提供的打开文件的函数FILE *fopen( const char * filename, const char * mode )其中filename是文件名,mode是对文件的操作,下表为常见的mode值对于文件的写入,常用的有四种方式int fputc( int c, FILE *fp );可以存入单个字符,如果写入成功,会返回写入字符的ASCII码值,如果发生错误,则会返回 EOF。int fputs( const char *s, FI

2020-10-10 11:25:09 699

原创 对于左值和右值的理解

在编译的时候,偶尔会碰到关于左值或者右值的错误。查了一下关于这方面的介绍,记录一下。C++中左值(lvalue)和右值(rvalue)的概念是从C继承来的。在C中,左值通常表示赋值符号左边的值,右值通常表示赋值符号右边的值。左值通常为带有名字的变量,有固定的内存来存储,在程序中能够通过这个名字寻址;右值一般是运算操作或者函数返回的一个临时值,没有办法获取到他的地址int a = 5; //1int b = fun(); //2int c = (a + b); //3比如上面这段代码,第一行

2020-10-10 11:22:35 806

原创 在类中起线程调用类里的成员函数

检查连接流程中,需要不断发送和接收socket消息,由于socket在发送和接收udp的过程是阻塞的,所以打算分别启动两个线程用来发送和接收socket的消息。这里记录一下启动线程调用类中的成员函数的方式如果在类里面启动线程调用成员函数,则直接将成员函数的地址和this指针传入线程,其他参数传入方式不变class MyClass{public: int a; void th1() { std::cout << "print hello" << std::endl;

2020-10-10 11:15:49 2702 1

原创 解决vs2019中cmake报找不到编译器错误

方案一windows + cmake + vs2019 编程这个方案可以暂时解决以上问题,但是他是将原有工程重新编译,生成一个新的vs工程。虽然新生成的工程能够编译和运行,但是工程的结构会和原来的工程有很大差异,多了很多东西,如果只是写自己的项目,可以用这种方案。但是如果是团队开发,不推荐!方案二简单粗暴,重装系统即可...

2020-04-07 17:11:50 5191

转载 windows + cmake + vs2019 编程

1.安装minGW642.安装cmake3.安装vs20194.组建代码文件结构:5.在build 文件下打开git bash,执行一下指令cmake .. -G"Visual Studio 16 2019"     tips( vs2017 对应 cmake .. -G"Visual Studio 15 2017"   )...

2020-04-07 16:57:32 2655

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除