
C/C++
文章平均质量分 60
hokool
这个作者很懒,什么都没留下…
展开
-
C++共享指针shared_ptr的理解分享
【代码】C++共享指针shared_ptr的理解分享。原创 2024-06-12 17:41:24 · 606 阅读 · 0 评论 -
C++部分关键字的作用-__declspec(dllexport)、__declspec(dllimport)、__attribute__、__cdecl
则提供了GCC和Clang编译器的扩展功能,可以用于多种不同的用途。当你在一个DLL中定义一个函数或变量,并希望它能够被其他应用程序导入和使用时,你可以使用。来指定函数的返回值不被修改(pure)、函数不抛出异常(nothrow)、函数不会返回(noreturn)等特性。这是GCC和Clang编译器提供的一种属性声明机制,用于给函数、变量或类型添加额外的元数据或行为。来声明这些函数或变量,这样编辑器才知道它们是需要从DLL中导入的。关键字通常是不可用的,而在GCC/Clang中,所用的条件差不多,使用。原创 2024-06-05 18:25:58 · 539 阅读 · 0 评论 -
inline内联函数-虚函数(virtual)可以是内联函数(inline)吗?
【代码】inline内联函数-虚函数(virtual)可以是内联函数(inline)吗?原创 2024-05-10 09:31:27 · 552 阅读 · 0 评论 -
C++笔记-effective stl
effective stl熟悉stl本身慎重选择stl容器,每一种stl容器对应不同的使用场景,比如deque往往比vector更加合适封装stl容器,积极的使用stl,可以高效的使用它积极使用其对应迭代器使用的函数,比如做相加运算使用accumulate替代for循环,可以更加高效调用对应的函数的时候,不使用过于复杂的名称,防止C++编译机制出现错误STL并非线程安全的。它不支持并发的写入。所以在写入之前记得上锁区别相等与等价:相等指的是里里外外完全相同,等价指的是可能只是外表相同#in原创 2024-01-17 23:04:10 · 556 阅读 · 0 评论 -
实现ubuntu与Windows的文件夹共享
为了便于学习跨平台的编码操作于是去学习了文件共享便于调试这里利用的是samba的软件包操作原创 2023-03-12 02:04:22 · 878 阅读 · 0 评论 -
堆和栈的内存管理区别
堆和栈的内存管理区别数据结构的差异C++中堆和栈的区别三种内存对象的比较内存分布上的堆和栈一级缓存和二级缓存数据结构的差异堆:先进先出栈:先进后出的、自顶向下C++中堆和栈的区别管理方面,需要自己分配、清除空间大小方面,堆最大可达4G(32位),而栈大小有限制,一般8M碎片方面:堆分配和回收一段时间后可能产生碎片,栈一定不会生长方向:栈往低地址生长,堆往高地址生长分配方式:栈可动态分配也可静态分配,堆只能动态分配分配效率:栈是机器系统提供的数据结构,而堆是语言层提供的数据结构,效率不一原创 2022-03-01 22:52:56 · 3812 阅读 · 0 评论 -
malloc和new的底层实现
malloc底层实现当开辟的空间小于128k时,调用brak()函数;当开辟的空间大于128k时,调用mmap(),malloc采用的是内存池的管理方式,以减少内存碎片。先申请大块内存作为堆区,然后将堆区分为多个内存块。当用户申请内存时,直接从堆区分配一块合适的空闲块。采用隐式链表将所有空闲块,每个空闲块记录了一个未分配的、连续的内存地址。new底层实现关键字new在调用构造函数的时候实际上进行了如下的几个步骤:创建一个新的对象将构造函数的作用域赋值给这个新的对象(因此this指向了这个新的对象原创 2022-02-24 20:47:56 · 736 阅读 · 0 评论 -
学习KMP算法-力扣28实现strStr()
例题:力扣-实现strStr().链接: 实现strStr().文章目录什么是KMPKMP有什么用呢什么是前缀表最长公共前后缀前缀表与next数组时间复杂度分析构造next数组使用next数组来做匹配前缀表统一减一 C++代码实现前缀表(不减一)C++实现什么是KMPKMP的名字由来是由这三位学者发明的:Knuth, Morris和Pratt,所以取了三位学者的首字母。所以叫KMPKMP有什么用呢KMP主要应用在字符串匹配上。KMP的主要思想史当出现字符串不匹配时,可以知道一部分之前已经匹配的原创 2022-02-17 20:00:35 · 564 阅读 · 0 评论 -
多路IO转接笔记(poll与epoll)
selectpollint poll(struct pollfd *fds, nfds_t nfds, int timeout);fds:监听的文件描述符nfds:监听数组的,实际有效监听个数timeout: > 0超时时长,单位(毫秒)。-1阻塞等待,0不阻塞struct pollfd{ int fd; //待监听的文件描述符 short events; //待监听的文件描述符对应的监听事件,取值POLLIN、POLLOUT、POLLERR short原创 2022-01-17 11:16:00 · 261 阅读 · 0 评论 -
逻辑右移和算术右移的区别
逻辑右移和算术右移有什么区别:“>>>” 逻辑右移“>>” 算术右移逻辑右移就是不考虑符号位,右移一位,左边补零即可算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1;否则,就补0所以算术右移也可以进行有符号位的除法,右移n位就等于除2的n次方例如,8位二进制数11001101分别右移一位逻辑右移就是[0]1100110算术右移就是[1]1100110...原创 2021-10-23 10:14:28 · 11151 阅读 · 2 评论