ptr
  • 2024-07-02C-特性和新特性
    C++特性和新特性C++11C++11是C++编程语言的一个重要标准版本,是C++98标准发布后13年来的第一次重大修正,它引入了许多新特性和改进,极大地增强了C++语言的表达能力和开发效率。C++11是C++编程语言的一个重要标准版本,由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标
  • 2024-06-24c语言基础学习
    数据类型1.基本数据类型整数类型:用于表示整数值,包括int、short、long等。int:通常为4个字节,即32位。short:通常为2个字节,即16位。long:通常为4个字节,即32位(在32位系统上),为8个字节,即64位(在64位系统上)。longlong:通常为8个字节,即64位。intintege
  • 2024-06-24带有ttl的Lru在Rust中的实现及源码解析
    TTL是TimeToLive的缩写,通常意味着元素的生存时间是多长。应用场景数据库:在redis中我们最常见的就是缓存我们的数据元素,但是我们又不想其保留太长的时间,因为数据时间越长污染的可能性就越大,我们又不想在后续的程序中设置删除,所以我们此时需要设置过期时间来让数据自动淘汰。
  • 2024-06-23C++11 标准库头文件模拟实现
    系列文章目录文章目录系列文章目录前言●智能指针模板●Vector1.简单版本2.X总结前言暂不考虑支持多线程常用STL的简单实现,主要内容百行左右完成,意在理解STL的原理●智能指针模板SharedPtr#include<assert.h>#include<atomic>template<classT
  • 2024-06-23C++ 智能指针
     问题引入intfunc1(intx){ inty=10; int*tmp=(int*)malloc(sizeof(int)*2); if(x==0) throw"func1_error"; else returnx+y; free(tmp);//抛异常造成异常安全问题,无法释放造成内存泄漏,}intmain(){ try{inta=func1(0);} catch(constc
  • 2024-06-22977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
    977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II977.有序数组的平方题目链接:977.有序数组的平方-力扣(LeetCode) 代码:classSolution{public:  vector<int>sortedSquares(vector<int>&nums){​    //intlength=end(nums)-begin(nums);
  • 2024-06-21String(C++)
    文章目录前言文档介绍经典题目讲解HJ1字符串最后一个单词的长度模拟实现框架构造函数析构函数迭代器c_str()赋值size()capacity()reserveempty()[]访问front/backpush_backappendoperator+=insert一个字符insert一个字符串eraseswapfind一个字符find一个字符串substr(
  • 2024-06-21[Effective Modern C++] 条款18笔记
    条款18中的完整代码:点击查看代码#include<iostream>#include<memory>#include<string>//假设基础的Investment类和Stock类classInvestment{public:virtual~Investment()=default;virtualvoiddisplay()const=0;};//其它类类似,略classSto
  • 2024-06-21[Effective Modern C++] 条款19笔记 - 为什么deleter的类型是std::unique_ptr类型的一部分,而不是std::shared_ptr的一部分?
    为什么deleter的类型是std::unique_ptr类型的一部分,而不是std::shared_ptr的一部分?std::unique_ptr<Widget,decltype(loggingDel)>upw(newWidget,loggingDel);std::shared_ptr<Widget>upw(newWidget,loggingDel);这个问题涉及到std::unique_ptr和std::shared_ptr
  • 2024-06-21CPP知识 typedef
    typedef本身是typedefine(类型定义)的缩写。typedef为c语言的关键字,作用是为一种数据类型(基本类型或自定义数据类型)定义一个新名字,不能创建新类型。与define不同,typedef仅限于数据类型,而不是表达式或具体的值。define发生在预处理,typedef发生在编译阶段。点击查看代码st
  • 2024-06-21Lru-k在Rust中的实现及源码解析
    LRU-K是一种缓存淘汰算法,旨在改进传统的LRU(LeastRecentlyUsed,最近最少使用)算法的性能。将其中高频的数据达到K次访问移入到另一个队列进行保护。算法思想LRU-K中的“K”代表最近使用的次数。因此,LRU可以认为是LRU-1的特例。LRU-K的主要目的是为了解决LRU算法“缓存污染”的
  • 2024-06-21C++(野指针)
    野指针(DanglingPointer)是在C++中指向无效内存位置的指针。野指针通常发生在以下几种情况下:释放了内存但没有将指针设为NULL:当使用delete或delete[]释放内存后,指针仍然保持指向原来的地址,但该地址已经无效。int*ptr=newint(10);deleteptr;//ptr现在是野指针栈上
  • 2024-06-20[AHK2] 借助vlc设置桌面动态背景
    概述网上可以找到许多设置桌面动态背景的c++代码,我们将它用ahk实现即可。我已经使用了很长一段时间,体验十分不错,所以推荐给大家。完整脚本请看最后一节。发送消息SendMsgToProgman(){DllCall('SendMessageTimeout','ptr',WinGetID('ahk_classProgman'),'
  • 2024-06-20关于CStringList的剖析
    CStringList是一个双向链表。它的内存管理依赖于CPlex结构。`__declspec(align(8))structCPlex{CPlex*pNext;//BYTEdata[maxNum*elementSize];void*data(){returnthis+1;}staticCPlex*PASCALCreate(CPlex*&head,UINT_PTRnMax,UINT_PTRcbElement); //
  • 2024-06-20聊一聊 Monitor.Wait 和 Pluse 的底层玩法
    一:背景1.讲故事在dump分析的过程中经常会看到很多线程卡在Monitor.Wait方法上,曾经也有不少人问我为什么用!syncblk看不到Monitor.Wait上的锁信息,刚好昨天有时间我就来研究一下。二:Monitor.Wait底层怎么玩的1.案例演示为了方便讲述,先上一段演示代码,Worker1在执行的过
  • 2024-06-18理解 C++ 中的对象类型与绑定机制:静态绑定 vs 动态绑定
    静态绑定和动态绑定概念解释对象的静态类型:对象在声明时采用的类型,在编译期确定,无法更改。对象的动态类型:对象在运行期实际表现的类型,在运行期决定,对象的动态类型可以更改(通过多态和指针/引用的方式)。静态绑定:绑定的是对象的静态类型,某特性(比如函数调用)依赖于对象的静
  • 2024-06-17C++11智能指针 unique_ptr、shared_ptr、weak_ptr与定制删除器
    目录智能指针场景引入-为什么需要智能指针?内存泄漏什么是内存泄漏内存泄漏的危害内存泄漏分类如何避免内存泄漏智能指针的使用及原理RAII简易例程智能指针的原理智能指针的拷贝问题智能指针的发展历史std::auto_ptr模拟实现auto_ptr例程:这种方案存在的问题:Boost库中的智能指针
  • 2024-06-17何时/如何使用 std::enable_shared_from_this<T>?
    要点回顾继承自std::enable_shared_from_this<T>的类能够在其自身实例中通过std::shared_from_this方法创建一个指向自己的std::shared_ptr<T>智能指针。从一个裸指针创建多个std::shared_ptr<T>实例会造成严重的后果,其行为是未定义的。std::enable_shared_from_this
  • 2024-06-16C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对
  • 2024-06-16裸函数和调用约定
    一、裸函数在正常的函数编译中,即使函数没有定义函数体的内容,编译器也依然会编译出部分汇编指令用来执行函数。但是如果定义一个裸函数void_declspec(naked)test()编译器将不会操作这个函数,不会给其生成汇编指令(但是会在主函数中生成call和jmp指令指向这个裸函数)可以看到
  • 2024-06-16C语言指针与数组的区别
    在C语言中,指针和数组虽然在很多情况下可以互换使用,但它们在概念上和行为上存在一些区别。下面详细解释这些区别:###数组1.**固定大小**:数组在声明时必须指定大小,这个大小在编译时确定,之后不能改变。2.**连续内存**:数组中的元素在内存中是连续存储的。3.**类型**:数组名代
  • 2024-06-15C++:智能指针
    文章目录背景内存泄漏内存泄漏的危害内存泄漏的分类堆内存泄露(HeapLeak)系统资源泄露如何避免内存泄漏智能指针的使用和原理RAII智能指针地原理auto_ptrunique_ptrshared_ptrshared_ptr的循环引用定制删除器背景由于C++11中引入了异常的概念,而异常会影响执行流,
  • 2024-06-14智能指针
    1.原因智能指针的出现主要是用来解决在实际的开发过程中程序员使用裸指针而导致的一系列问题。当然裸指针本身是安全的,只是会由于开发者的不规范使用而导致出现各类问题:申请的资源在程序运行结束后忘记释放了。对申请了的资源做了重复的释放由于程序的代码逻辑使得程序在中途
  • 2024-06-14利用某些平台(聚合API、百度AI、科大讯飞API)的API接口,利用HTTP协议向服务器发送请求,并接受服务器的响应,要求利用cJSON库对服务器的响应数据进行解析,并输出到终端。
    要使用C语言通过HTTP协议向服务器发送请求并接收响应,你可以使用如libcurl这样的库来发送HTTP请求。libcurl是一个免费且易于使用的客户端URL传输库,支持多种协议,包括HTTP。同时,为了解析服务器响应中的JSON数据,你可以使用cJSON库,这是一个轻量级的JSON解析库。以下是一个简单的示例
  • 2024-06-12动态内存管理<C语言>
    导言       在C语言学习阶段,指针、结构体和动态内存管理,是后期学习数据结构的最重要的三大知识模块,也是C语言比较难的知识模块,但是“天下无难事”,只要认真踏实的学习,也能解决,所以下文将介绍动态内存管理涉及到的一些函数以及概念。目录导言为什么存在动态内存管理