C/C++
文章平均质量分 90
hc-斌斌
这个作者很懒,什么都没留下…
展开
-
C++11中的匿名函数(lambda函数,lambda表达式)
C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: [capture](parameters)->return-type{body} 如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如: [capture](parameter.........原创 2020-04-14 16:40:58 · 823 阅读 · 0 评论 -
C++ STL
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string>#include <map>#include <vector>#include <string>#include <string.h>#inc...原创 2020-04-10 17:21:20 · 104 阅读 · 0 评论 -
gdb 调试多线程
gdb 调试多线程如果目标进程已经core dump了,那么 gdb -c core xxxxxx是对应的程序文件。如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法一是 gdb -p xxxxxx是该进程的进程ID或者用gcore xxx先获取对应进程的core,他会生成一个core文件 core.xxx进入gdb后(gdb) info threads可...转载 2019-11-30 22:12:01 · 134 阅读 · 0 评论 -
C/C++中内存操作注意事项的几种情况
1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存2.没有正确地清除嵌套的对象指针3.在释放对象数组时在delete中没有使用方括号方括号是告诉编译器这个指针指向的是一个...原创 2019-11-21 13:25:32 · 208 阅读 · 0 评论 -
STL
https://blog.csdn.net/Nrtostp/article/details/81588218Vector1、结构vector模塑出一个动态数组,因此,它本身是“将元素置于动态数组中加以管理”的一个抽象概念。vector将其元素复制到内部的dynamic array中。元素之间总存在某种顺序,所以vector是一种有序群集。vector支持随机存取,因此只要知道位置,可以...转载 2019-11-12 14:07:04 · 153 阅读 · 0 评论 -
使用valgrind来检查内存泄漏
之前写代码,有少量的内存泄露,平时没发现,长时间运行才发现问题。为以后更方便的检测内存泄漏问题,于是学习使用了valgrind来对内存泄漏进行检测。valgrind不止可以检测内存泄露,但目前只使用这一功能。1.安装去以下链接下载安装文件下载链接下载完成后解压,终端进入解压后的文件夹,依次输入./configuremakemake install123如遇提示权...转载 2019-10-12 16:44:24 · 226 阅读 · 0 评论 -
wpa_cli
wpa_cli 与wpa_supplicant交互的命令行客户端。wpa_cli [-p][-i] [-hvB] [-a] \ [-P] [-g] [-G] [command..] -h =help (show this usage text) -v =shown version information -a =run in daemon mode executing the转载 2018-01-02 15:50:13 · 470 阅读 · 0 评论 -
关于加载地址和运行地址理解
加载地址/存储地址和运行地址/链接地址区别: a.加载地址是指代码存储所在的物理地址,由于ARM总是从0开始取值,即PC初始值为0,所以加载地址必须对应0地址,程序才能正确启动执行,之后才可以进行跳转,比如设置PC等于一个子程序的入口地址,而这个入口地址可能在rom中也可能在ram中。 b.运行地址是链接器根据链接文件中指定的链接地址作为程序运行的起始地址,(作用)将程序中所有指令地址按照转载 2017-12-30 20:52:10 · 1829 阅读 · 0 评论 -
汇编运行地址,链接地址,加载地址,存储地址 位置无关码、位置有关码
转载自:http://blog.csdn.net/linux_103/article/details/8888427搞ARM开发时,在连接目标代码会提到运行地址和加载地址。这两者有什么区别呢?其次,网上也有说链接地址和存储地址,那么这四个地址之间有什么区别?1、运行地址链接地址:他们两个是等价的,只是两种不同的说法。2、加载地址存储地址:他们两个是等价的,也是两种不同的说法转载 2017-12-30 20:17:19 · 715 阅读 · 0 评论 -
内存分布及程序运行中
BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段 :数据段(data segment)通常是指用来存放程序中 已初始化 的 全局变量 的一块内存区域。数据段属于静态内存分配。代码段: 代码段(code segment/text seg转载 2017-12-30 19:44:24 · 171 阅读 · 0 评论 -
c++成员函数指针揭秘
原帖地址 http://blog.csdn.net/xlie/article/details/3031966#_Toc133650388目 录 1 前言2 语法3 与其它语言机制的混合使用3.1 继承3.2 虚函数3.2 多继承4 实现4.1 Microsoft的实现4.1.1 内部表示4.1.2转载 2017-12-12 13:21:22 · 214 阅读 · 0 评论 -
一般函数指针和类的成员函数指针
转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针和一般函数的指针的表现形式不转载 2017-12-12 13:20:12 · 151 阅读 · 0 评论 -
source insight
在编程的过程中,对于引用的系统库头文件,经常需要去查看具体声明内容,而仅仅为我们的项目源码建立一个project并不能直接看到,这里有一个办法: source insight安装以后,在自定义的“workplace”目录中有一个BASE工程,这个工程是一个全局的工程,它的设置对所有工程都有效。所以我们只需要将所有的库头文件都添加至这个base工程中,并执行Project->Synch转载 2017-04-24 12:27:33 · 254 阅读 · 0 评论 -
C++相关
1:拷贝构造函数 比如 A(A& a) 函数参数必须为引用的原因是如果是传值,参数的传递也是有拷贝的动作调用的就是拷贝构造函数。这样会发生调用死循环发生堆栈OVERFLOW。其实也可以传递对象指针,这样传递参数拷贝的是地址不会发生循环调用。采用引用原因是传递引用效率比指针高不用拷贝。2:当你不想让对象在堆栈上创建只能堆上同时保持能够被继承时,可以把析构函数设为保护的。对于prote原创 2016-12-05 13:36:27 · 350 阅读 · 0 评论 -
实际用户ID,有效用户ID及设置用户ID详解
实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID。另外用户ID是个整型数,为了说转载 2016-10-12 13:52:55 · 1583 阅读 · 0 评论 -
Atmel Studio 7.0 快速上手指南(基于ASF)
就在最近,Atmel终于推出了新版本IDE——Atmel Studio 7.0,该版本采用了微软最新的 Visual Studio 2015 平台,在速度、性能和代码视觉风格上都体现的淋淋尽致,用起来非常顺手,下面将结合实例,介绍AtmelStudio 7.0 的使用方法。 第1步:打开Atmel Studio 7.0 第2步:新建工程项目转载 2018-01-24 13:58:39 · 40407 阅读 · 4 评论 -
关于vector的内存释放问题
关于vector的内存释放问题以前一直想当然的以为vector 的clear()函数会保证释放vector的内存,今天网上一查资料发现完全不是我想象的那样子。比如有如下代码:1 tempObject obj1;2 tempObject obj2;3 vector<tempObject> tempVector;4 5 tempVector.pushback(obj1...转载 2018-10-16 12:15:28 · 653 阅读 · 0 评论 -
C++ 的重要特性展示
比较懒,直接代码展示吧如下代码展示C++ 的特性。#include <string>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <stdint.h>#include <stddef.h>#include <string...原创 2018-10-16 12:26:22 · 211 阅读 · 0 评论 -
HTTPS原理和CA证书申请(满满的干货)
众所周知,WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输目前主流的网站基本上开始默认采用HTTPS作为通信方式,一切的考虑都基于对安全的要求,那么如何对自己的网站配置HTTPS通信,是本文着重介绍的本文的主要内容包括:https加密传输的原理、如何申请https所用的CA证书,...转载 2019-10-10 18:33:25 · 121 阅读 · 0 评论 -
蓝牙相关资料·
蓝牙的WIKI参考地址是https://wiki.archlinux.org/index.php/Bluetooth_(简体中文) 这里有详尽的蓝牙软件资料编译bluez-5.43 遇到的问题点configure: error: GLib >= 2.28 is required解决方法:一般glib会被安装,主要是一些开发文件,如头文件被安装,ubuntu如下解决...原创 2019-09-12 11:29:26 · 317 阅读 · 0 评论 -
工程师成长之路:工作1-3年工程师如何突破瓶颈期
本文转载自:http://bbs.csdn.net/topics/392036101序2013年03月02日,我写了一篇博客<从1.5K到18K,一个程序员的5年成长之路>(http://blog.csdn.net/lgg201/article/details/8637763),被CSDN全站推荐.后来CSDN社区之星栏目对我做了专访(http://www.cs...转载 2019-06-06 18:54:45 · 245 阅读 · 0 评论 -
加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,...转载 2019-02-27 15:31:33 · 495 阅读 · 0 评论 -
GDB 使用小节
#ifdef CORE_DUMP_DEBUG struct statfs rfs; struct statfs sdfs; const char *core_command1 = "echo \"1\" > /proc/sys/kernel/core_uses_pid"; const char *core_command2 = NULL...原创 2019-02-15 18:41:20 · 351 阅读 · 0 评论 -
alsa frame period period_size buffer_size 等解释
FramesPeriods一个frame就等于一个要被播放的声音样本。与通道数和样本长度无关。例子:1帧立体声48khz 16位的pcm数据长度为4bytes 1帧5.1正道48k 16位pcm流的大小为12bytes一个period就是每两次硬件中断之间的帧数。poll()会每个周期return一次。buffer是一个环形buffer,大小一般来说比一个period size大,...转载 2019-01-12 17:49:04 · 5867 阅读 · 1 评论 -
YUV格式详解
工作中经常会使用一些颜色空间,最主要的就是使用RGB空间和YUV空间,把两空间的一些知识记录在此。1. 什么是RGB?RGB是红绿蓝三原色的意思,R=Red、G=Green、B=Blue。2.什么是YUV/YCbCr/YPbPr?亮度信号经常被称作Y,色度信号是由两个互相独立的信号组成。视颜色系统和格式不同,两种色度信号经常被称作U和V或Pb和Pr或Cb和Cr。这些都是由不同的编码格式所...转载 2019-01-02 18:22:43 · 219 阅读 · 0 评论 -
HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTT...转载 2019-01-11 17:59:02 · 289 阅读 · 0 评论 -
C++对象模型:单继承,多继承,虚继承
什么是对象模型有两个概念可以解释C++对象模型:语言中直接支持面向对象程序设计的部分。对于各种支持的底层实现机制。类中成员分类数据成员分为静态和非静态,成员函数有静态非静态以及虚函数class data members:static和nonstaticclass data functions:static、nonstatic和virtual比如:clas...转载 2018-12-23 10:33:14 · 183 阅读 · 0 评论 -
网络二三层转发
二层转发具体过程 转载至https://blog.csdn.net/hjq129520/article/details/60956536根据路由表项的掩码和目的IP相与,判断主机A和主机B处于同一网段,采用二层转发。1. 主机A向全网段的其他主机发送ARP广播报文,其SMAC为主机A 的MAC地址,SIP为主机A的IP地址192.168.1.1,DMAC为全零的广播地址,DI...转载 2018-10-29 13:39:44 · 800 阅读 · 0 评论 -
函数调用协议
调用协议常用场合 __stdcall:Windows API默认的函数调用协议。 __cdecl:C/C++默认的函数调用协议。 __fastcall:适用于对性能要求较高的场合。 函数参数入栈方式 __stdcall:函数参数由右向左入栈。 __cdecl:函数参数由右向左入栈。 __fastcall:从左开始不大于4字节的参数放入CPU的ECX和EDX寄存器,其余参数从右向左入栈...原创 2018-10-16 13:57:12 · 262 阅读 · 0 评论 -
Repo和Git 版本管理常用命令
Git命令快速参考Git Command Quick Reference本附录为Git常见命令快速参考。每节介绍一种操作类型。这里会列出很多命令,而相应的解释却不多。对于还不熟悉Git的读者,可回头翻阅第1章“Git的版本控制之道”(第3页)。A.1安装和初始化Setup and Initialization在使用Git之前,须要先进行配置。在使用一个新的版本库转载 2016-03-26 10:52:03 · 461 阅读 · 0 评论 -
C Runtime Library 的来历
msvcrt.dll (名称:Microsoft C Runtime Library)提供了printf,malloc,strcpy等C语言库函数,并且为使用C/C++(Vc)编绎的程序提供了初始化(如获取命令行参数)以及退出等功能. C Runtime Library 的来历, API, STL, MFC, ATL关系 刚接触Windows开发时,为了快速入门查转载 2015-07-16 14:13:15 · 252 阅读 · 0 评论 -
关于进程中的栈
最近看了CU上的一个贴子,楼主想在函数里返回一个数组,有人提到了用返回栈的方法.栈在C程序员口中常常提及.由其在变量的内存分配时说的最多,比如:在函数中申请的变量放在栈中,而用malloc分配的空间放在堆中。那么到底什么是进程中栈呢?到底进程中栈有什么用呢?本文以结合X86 32位linux系统为例来,来对栈及栈相关寄存器进行说明。本人水平有限,可能存在理解上的转载 2015-07-16 14:07:40 · 483 阅读 · 0 评论 -
拷贝构造函数和赋值操作符
类有默认的构造函数、拷贝构造函数、析构函数、赋值操作运算符=和取地址运算符&. 默认的赋值操作运算符和默认的拷贝构造函数类似,对于每个非static成员,都是执行逐个成员赋值(memberwise assignment),同时也是按位赋值(bitwise copy).即,只是简单地将每个类成员的内存中的直接拷贝到对应的新的类的成员当中。 那么,什么时候需要赋值操作符转载 2015-07-16 14:05:05 · 249 阅读 · 0 评论 -
java向多线程中传递参数的三种方法详细介绍
但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行转载 2015-07-15 14:27:21 · 1747 阅读 · 0 评论 -
C/C++中宏定义的经典运用
新年快乐,好好的玩了几天,张家港二日游让我有了较大的感触,苏南发展的真心好哦,想想老家的发展真的觉得是落后哦,回学校看了一些大牛的博客,貌似在假期中大牛们才有时间写博客。祝大家新年快乐,身体健康。 言归正传,在C语言中宏定义是比较有用的技巧,在Linux源码中经常使用一些宏定义,比如宏container_of()等都是经典的宏定义表示方式。在C++不再主张使用宏定义,但是宏定义实际上却转载 2015-07-15 14:12:24 · 478 阅读 · 0 评论 -
c/c++名称修饰
1、修饰名(Decoration name)C或者C++函数在内部(编译和链接)通过修饰名识别。修饰名是编译器在编译函数定义或者原型时生成的字符串。有些情况下使用函数的修饰名是必要的,如在模块定义文件里头指定输出C++重载函数、构造函数、析构函数,又如在汇编代码里调用C或C++函数等。修饰名由函数名、类名、调用约定、返回类型、参数等共同决定。2、名字修饰约定随调用约定和编译转载 2015-07-15 14:09:36 · 791 阅读 · 0 评论 -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特转载 2015-07-15 14:17:27 · 248 阅读 · 0 评论 -
编写DLL所学所思——导出函数
编写DLL所学所思(1)——导出函数2010.8.31~2010.9.1总结2011.9.28~30整理烛秋动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。(1) 显式调用:使用LoadLibrary载入动态链接库、使用GetProcAddress获取某函数地址。(2) 隐式调用:可以使用#pragma comment(lib,转载 2015-07-15 14:10:57 · 406 阅读 · 0 评论 -
C++的深拷贝与浅拷贝
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 1234567891011转载 2015-08-07 14:40:14 · 458 阅读 · 0 评论 -
为什么赋值运算符要返回引用?
为什么赋值运算符要返回引用??因为赋值操作会改变左值,而 + 之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式。+ 返回一个临时对象是合情合理的 ,你若返回引用大多数情况下也不会出错或导致某个操作数被意外修改,但这就使(a+b)=c这样的表达式可以出现,这就有点不符合约定了,当然,你也可以让 + 返回一个常引用。转载 2015-07-08 09:15:47 · 2670 阅读 · 0 评论