随笔分类 -  C/C++学习

摘要:参考链接:C++11 - atomic类型和内存模型 - 知乎 (zhihu.com) std::atomic - C++中文 - API参考文档 (apiref.com) “就两个线程就共享了一个数据,需要承担互斥锁的管理负担?!” C++11标准从不同的视角看待这个问题:需要同步的总是资源/数据 阅读全文
posted @ 2022-02-14 22:11 行路人& 阅读(229) 评论(0) 推荐(0)
摘要:参考链接:c++11:static_assert 与assert_夜夜夜夜-CSDN博客_static_assert 背景: assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 asse 阅读全文
posted @ 2022-02-14 21:05 行路人& 阅读(943) 评论(0) 推荐(0)
摘要:参考链接:C++内存管理之shared_ptr - 小念之歌 - 博客园 (cnblogs.com) 1. 初始化 sahred_ptr 智能指针的使用方式与普通指针类似。解引用一个智能指针返回它指向的对象。如果在一个条件判断中使用智能指针,效果就是检测它是否为空: #include <iostre 阅读全文
posted @ 2022-02-14 20:15 行路人& 阅读(491) 评论(0) 推荐(0)
摘要:一.空类中自带的函数有6个,分别是: class Base { public: // class默认private权限 Base () = default; // 默认构造 ~Base () = default; // 默认析构 Base (const Base &b)= default; // 默 阅读全文
posted @ 2021-12-04 00:13 行路人& 阅读(376) 评论(0) 推荐(0)
摘要:一.前言: 关键字sizeof的作用是返回对象或类型占用的内存字节数,返回值是size_t。基本数据类型占用的字节数: 字节数 类型 1字节 bool 、char 2字节 short 4字节 int 、float、 long(32位)、指针(32位) 8字节 double、long long、指针( 阅读全文
posted @ 2021-12-03 22:30 行路人& 阅读(401) 评论(0) 推荐(0)
摘要:shared_ptr基础 智能指针是存储动态分配对象指针的类,用于生命周期的控制。当指针离开其作用域时,自动销毁动态分配的空间,防止内存泄漏。使用智能指针需要包含头文件#include<memory> std::shared_ptr采用引用计数,每一个shared_ptr的拷贝都指向相同的内容,当最 阅读全文
posted @ 2021-11-04 14:41 行路人& 阅读(186) 评论(0) 推荐(0)
摘要:一.编译的程序占用内存区: 在C++中内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 堆(heap):堆是操作系统所维护的一块特殊内存,用于程序的内存动态分配。 生命周期:开发者手动申请和释放,C使用malloc/free从堆上分配、释放内存,C++使用new/delete 阅读全文
posted @ 2021-11-03 23:19 行路人& 阅读(678) 评论(0) 推荐(0)
摘要:参考链接学习:https://www.cnblogs.com/yz123/p/11949311.html 简要: 1.Integer 类和 int 的区别 ①、Integer 是 int 包装类,final修饰,int 是八大基本数据类型之一(byte,char,short,int,long,flo 阅读全文
posted @ 2021-10-12 23:51 行路人& 阅读(494) 评论(0) 推荐(0)
摘要:字符串复制函数 实现字符串翻转 实现字符串比较 阅读全文
posted @ 2019-07-08 20:34 行路人& 阅读(215) 评论(0) 推荐(0)
摘要:选择题 1:设float a=2, b=4, c=3;,以下C语言表达式与代数式 (a+b)+c计算结果不一致的是 A.(a+b)*c/2 B.(1/2)*(a+b)*c C.(a+b)*c*1/2 D.c/2*(a+b) 参考答案:B,因为a,b,c三个变量都是浮点数,所以在B答案中其结果是0,因 阅读全文
posted @ 2019-07-08 15:19 行路人& 阅读(5265) 评论(3) 推荐(0)
摘要:一.前言 编译器优化介绍: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能, 1)在硬件上: 引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。 2)软件一级的优化: 阅读全文
posted @ 2019-07-08 09:49 行路人& 阅读(33042) 评论(0) 推荐(4)
摘要:数组指针: 定义 int (*p)[n]; 占用内存中一个指针的存储空间 ()优先级高,首先说明p是一个指针,指向一个int型的一维数组,故名数组(的)指针。指向的一维数组的长度是n,也可以说是p的步长为n。 例:可指向二维数组,(*(p+i))[n],n为列。 如要将二维数组赋给一指针,应这样赋值 阅读全文
posted @ 2019-07-01 15:59 行路人& 阅读(285) 评论(0) 推荐(0)
摘要:线程池: 线程池是一种多线程处理形式,初始创建多个线程,初始线程处于wait状态。处理过程中将任务添加到队列中,按照队列顺序依次处理,此时线程处于work状态自动启动这些任务。线程任务处理完后继续处理队列中待执行任务,最后完成所有任务放回至线程池统一销毁。线程池线程都是后台线程,适用于连续产生大量并 阅读全文
posted @ 2019-06-30 17:44 行路人& 阅读(821) 评论(0) 推荐(0)