![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 75
山上有只羊M
这个作者很懒,什么都没留下…
展开
-
const和static
各自的作用:static关键字至少有下列n个作用: 位于静态存储区,不在堆栈中。(1)局部变量:函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (2)在模块内的static**全局变量**可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的static**函数**只可被这一...原创 2018-03-19 21:32:07 · 250 阅读 · 0 评论 -
内存池、进程池、线程池
内存池1. 传统内存管理函数的不足:通常我们习惯直接使用new、malloc等系统调用申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。系统在接收到分配一定大小内存的请求时,首先查找内部维护的内存空闲块表,并且需要根据一定的算法(例如分配最先找到的不小于申请大小的内存块给请求者,或者分配最适于申请大小的内存块,或者分配最大空...原创 2018-03-20 09:52:25 · 326 阅读 · 0 评论 -
C语言实现C++的三大特性(封装、继承和多态)
面向对象的程序设计有三大特性:封装、继承和多态。封装C++语言中支持数据封装,类是支持数据封装的工具,对象是数据封装的实现。在封装中,还提供一种对数据访问的控制机制,使得一些数据被隐藏在封装体内,因此具有隐藏性。封装体与外界进行信息交换是通过操作接口进行的。封装性实际上是由编译器去识别关键字public、private和protected来实现的,体现在类的成员可以有公有成员(publ...原创 2018-03-20 10:56:38 · 5551 阅读 · 1 评论 -
智能指针与动态内存
智能指针的出现实际上就是为了可以方便的控制对象的生命期,在智能指针中,一个对象什么时候和在什么条件下要被析构或者是删除是受智能指针本身决定的,用户并不需要管理。防止内存泄漏。智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载...原创 2018-03-20 16:43:19 · 277 阅读 · 0 评论 -
顺序容器类,vector/deque/list/array/string
标准库中的顺序容器包括: (1)、vector:可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。 (2)、deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。 (3)、list:双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。 (4)、forward_list:单向链表。只支持...原创 2018-03-20 21:01:56 · 254 阅读 · 0 评论 -
线程与互斥锁(C++11中std::thread和std::mutex的用法)
线程0首先是曾经在MultiCMOS项目中用到的:#include <thread> //包含头文件class IDataProcessUnit{protected: bool m_processing{ false }; //线程退出标识 std::thread m_thrProcess; //线程句柄public: //数据处理流程在...原创 2018-04-11 18:07:08 · 4455 阅读 · 1 评论 -
程序设计和数据结构基础知识
1、内存分区堆 由程序员手动分配和释放;若程序员不释放,程序结束时由系统释放。 分配:malloc(C语言),new(C++) 释放:free(C语言),delete(C++) 分配方式类似数据结构中的链表。栈 由编译器自动分配和释放。 存放函数的参数值、局部变量的值等。 操作方式类似数据结构中的栈。全局存储区(静态存储区) 存放全局变量和静态变量。 包括DATA段(全...原创 2018-05-30 09:55:04 · 687 阅读 · 0 评论