c++
文章平均质量分 78
uestc-leon
我想做一个强者
展开
-
C++11开发中的Atomic原子操作
原子操作在多线程开发中经常用到,比如在计数器,序列产生器等地方,这类情况下数据有并发的危险,但是用锁去保护又显得有些浪费,所以原子类型操作十分的方便。原子操作虽然用起来简单,但是其背景远比我们想象的要复杂。其主要在于现代计算系统过于的复杂:多处理器、多核处理器、处理器又有核心独有以及核心共享的多级缓存,在这种情况下,一个核心修改了某个变量,其他核心什么时候可见是一个十分严肃的问题。同时在极致最求性...转载 2017-06-28 15:11:28 · 1546 阅读 · 0 评论 -
c++11:std::function和bind
这两个的头文件都是#include <functional>std::function它是函数、函数对象、函数指针、和成员函数的包装器,可以容纳除了类成员(函数)指针之外的所有可调用函数。 以统一的方式处理函数、函数对象、函数指针。允许保存和延迟执行函数。 std::function object最大的用处就是在实现函数回调,使用者需要注意,它不能被用来检查相等或者不相等void G();st原创 2017-11-16 11:14:45 · 268 阅读 · 0 评论 -
GDB调试命令小结
1.启动调试前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息。gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的原因gdb program pid //用gdb调试已经开始运行的程序,指定pid即可转载 2017-11-15 11:40:14 · 240 阅读 · 0 评论 -
c++11:右值引用与转义语义和移动构造函数的关系
右值引用右值右值是指表达式结束时就不再存在的临时对象。右值由两个概念构成将亡值:如将要被移动的对象,T&&函数返回值,move返回值纯右值:如非引用返回的临时变量,表达式产生的临时变量,原始字面量和lamba表达式右值引用右值引用就是对一个右值进行引用的类型。标记为T&&,因为右值不具名,所以我们只能通过引用的方式找到它。通过右值引...原创 2017-11-17 13:19:05 · 568 阅读 · 1 评论 -
向操作系统申请内存的两种方式:brk和mmap
如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看。 majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误。 这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?转载 2017-10-27 13:18:14 · 5312 阅读 · 0 评论 -
C++11 右值引用和转移语义
新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面:消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。能够更简洁明确地定义泛型函数。左值与右转载 2017-09-26 22:41:11 · 238 阅读 · 0 评论 -
c++11:智能指针之weak_ptr
1、为什么需要weak_ptr?在正式介绍weak_ptr之前,解决shared_ptr的循环引用问题。C++11引入了weak_ptr,来打破这种循环引用。2、weak_ptr是什么?weak_ptr是为了配合shared_ptr而引入的一种智能指针,它指向一个由shared_ptr管理的对象而不影响所指对象的生命周期,也就是将一个weak_ptr绑定到一个shared_ptr不会改变share...转载 2017-09-23 16:33:54 · 751 阅读 · 0 评论 -
c++11:智能指针之unique_ptr
unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C+...转载 2017-09-23 16:12:02 · 1558 阅读 · 0 评论 -
c++11:智能指针之shared_ptr
c++11提供了三种智能指针:std::shared_ptr,std::unique_ptr和weak_ptr,使用时需要引用头文件< memory >shared_ptr共享的智能指针shared_ptr使用引用计数,每使用它一次内部引用计数加一,没析构一次,引用计数减一,减为0时释放所指向的堆内存。初始化可以通过以下三种方法初始化shared_ptr 构...原创 2017-09-23 15:10:49 · 1851 阅读 · 0 评论 -
C++字符串操作接口
选用C++标准程序库中的string类,是因为他和c-string比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include < stri...转载 2017-09-22 20:40:17 · 580 阅读 · 0 评论 -
C++命名规范(参考google C++规范)
写了很长时间的Java,对C++生疏了,那么就从C++的命名规范开始吧。 *为了从简,本blog copy自 http://blog.csdn.net/u012333003/article/details/20282277 也可以参考 http://www.cnblogs.com/ggjucheng/archive/2011/12/15/2289291.html 以后可以读读《转载 2017-07-14 22:56:54 · 857 阅读 · 1 评论 -
字符串常量存放在哪个存储区?堆栈的区别
字符串常量,放在哪个存储区呢?是“自动存储区”还是“静态存储区”中?比如:char *pstr="hello world!";这里,"hello world!"是一个字符串常量,pstr是在栈中的变量。我想问,字符串常量,在哪个内存区域分配空间呢?好像应该不是在“栈区“分配空间吧!!!一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内转载 2017-07-14 19:05:55 · 2449 阅读 · 0 评论 -
C++11学习
C++11学习本章目的:当Android用ART虚拟机替代Dalvik的时候,为了表示和Dalvik彻底划清界限的决心,Google连ART虚拟机的实现代码都切换到了C++11。C+11的标准规范于2011年2月正式落稿,而此前10余年间,C++正式标准一直是c++98/03[①]。相比C++98/03,C++11有了非常多的变化,甚至一度让笔者大呼不认识C++了[②]。不过,作为转载 2017-07-13 08:20:59 · 313 阅读 · 0 评论 -
c++11:lambda表达式
lambda 表达式可以方便地构造匿名函数,如果你的代码里面存在大量的小函数,而这些函数一般只被调用一次,那么不妨将他们重构成 lambda 表达式。C++11 的 lambda 表达式规范如下:[ capture ] ( params ) mutable exception attribute -> ret { body } (1) [ capture ] ( params...原创 2017-11-15 23:04:30 · 314 阅读 · 0 评论