在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了ZwAllocateVirtualMemory这个函数用于专门分配虚拟空间,而与之相对应的则是ZwFreeVirtualMemory此函数则用于销
requires 是 C++20 中引入的一个新关键字,用于在函数模板或类模板中声明所需的一组语义要求,它可以用来限制模板参数,类似于 typename 和 class 关键字。
requires关键字常与type_traits头文件下类型检查函数匹配使用,当requires后的表达式值为true
前言:
俗话说的好工欲善其事必先利其器,Git分布式版本控制系统是我们日常开发中不可或缺的。目前市面上比较流行的Git可视化管理工具有SourceTree、Github Desktop、TortoiseGit,综合网上的一些文章分析和自己的日常开发实践心得个人比较推荐开发者使用SourceTr
前言:
随着VS Code的功能和插件的不断强大和完善,它已经成为了我们日常开发中一个必不可缺的伙伴了。在之前我曾经写过一篇SourceTree使用教程详解(一个git可视化管理神器,想要了解的话可以点击查看详情),这篇文章主要是对VS Code如何使用Git可视化管理我们的程序源代码。
VS
前言:
使用Git版本控制器差不多有一年多的时间了,在这一年多的时间里对这个传说的的分布式版本控制工具有了一定的了解。在实战项目开发中,对关于如何在通过Git提交项目,以及如何使用Git命令对提交的文件进行撤销,回退/还原,删除等相关操作有了一定的了解。以下主要是我在工作,学习中对自己使用Gi
前言:
作为一个国内开发者而言使用Git操作神器SoureTree最大的问题就是账号注册问题,因为注册账号的链接在不FQ的情况下基本上是打不开的(弄过的童鞋应该都体会过),所以有的时候我们需要借助一些FQ工具助我们一臂之力。如蓝灯,谷歌访问助手等,该篇博客主要是讲解一下如何注册So
前言
现如今将代码开源已经成为软件开发行业的一种趋势,而现在比较有名的代码托管平台有GItHub、Gitee、Gitlab等相关平台。而我们在使用代码托管平台最为常见的就是如何将自己本地的代码推送到远程托管平台中的仓库中,现如今各大托管平台基本上都提供了基于SSH协议的GIt服务,因此我们常见
普通构造函数VS初始化列表构造函数
初始化列表构造函数最优先匹配问题
对于一个类而言,只要其中包含有初始化列表的构造函数,编译器在编译使用{}语法的构造时会最倾向于调用初始化列表构造函数,哪怕做类型转换也在所不惜,哪怕有类型最佳匹配的普通构造函数或移动构造函数也会被劫持
class Widget
OpenCV是大型的Third party 计算机视觉库,在开发中会经常用到,本篇记录一下 在Ubuntu系统上安装和配置OpenCV,并使用C/C++调用OpenCV
关于VS Code配置C/C++开发环境的部分,见之前的博文 Linux/Ubuntu系统下使用VS Code配置C/C
有没有熟悉这样的场景:
时间已过十一点,空荡荡的办公室只剩自己孤身一人。陪你伏案忙碌的只有电脑风扇被迫营业的“嗡嗡”声, 窗外的夜正黑得带劲,仿佛巨兽的口吞噬自己的无奈。
天性善良不善言辞的你,容易被人颐指气使,加班对你来说是家常便饭。
作为一名码农,“我到底哪里错了,我需要怎么解决?”是我的座
石 家 庄 铁 道 大 学
实验报告
课程名称
面向对象程序设计
班级
姓名
学号
实验日期
2023.5.16
评分
100
实验项目名称:输入输出流
一、实验目的
掌握文本文件和二进制文件的基本访问方法;
了解一般I/O流和文件流
*以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/7A9-tGZxf4w_7eZl3OUQ4A
学过 Java、C# 或者其他托管语言(managed languages)的同学,回过头来看 C++ 的时候,第一
平衡树
平衡树就是为了实现一类元素在线性结构中动态变化的功能所需要的数据结构。
平衡树是一种基于二叉搜索树的数据结构。
满足:左儿子 (<) 根 (<) 右儿子。
也就是一切小于根节点的在左边,一切大于根节点的在右边。
这样想要查找一个节点的位置时间复杂度就是 (O(log n))。
一:背景
1. 讲故事
最近不知道咋了,各种程序有问题都寻上我了,你说 .NET 程序有问题找我能理解,Windows 崩溃找我,我也可以试试看,毕竟对 Windows 内核也知道一丢丢,那 Visual Studio 有问题找我就说不过去了,但又不好拒绝,就让朋友发下卡死的 dump 我看一看。
C++ 如何快速实现一个容器的迭代器
引言
C++的标准库中的容器都会提供迭代器,如果一个容器满足forward_range,那么这个容器一般会提供以下成员类型和函数:
iterator
const_iterator
begin
end
begin
cend
如果该容器还满足bidirection
c++函数参数和返回值
函数存储位置
函数参数入栈顺序
初始化列表
函数的返回值
用参数引用来返回
返回一个参数指针
返回一个对象
总结
函数的几种变体
inline 函数
函数对象
lambda 函数
c++函数参数和返回值
c++一直以来是一个关注效率的代码,这样关于函数的参数传递和返回
在前面的文章《驱动开发:运用MDL映射实现多次通信》LyShark教大家使用MDL的方式灵活的实现了内核态多次输出结构体的效果,但是此种方法并不推荐大家使用原因很简单首先内核空间比较宝贵,其次内核里面不能分配太大且每次传出的结构体最大不能超过1024个,而最终这些内存由于无法得到更好的释放从而导致
文章首发
【重学C++】01| C++ 如何进行内存资源管理?
前言
大家好,我是只讲技术干货的会玩code,今天是【重学C++】的第一讲,我们来学习下C++的内存管理。
与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存。我们必须手动管理堆上内存分配和释放,这往往会导
1.1 为什么要学 Qt
Qt是一个跨平台的 C++ 图形用户界面应用程序框架
Qt 为应用程序开发者提供建立艺术级图形界面所需的所有功能
Qt 是完全面向对象的,很容易扩展,并且允许真正的组件编程
(1)Qt 发展史
在讲解学习 Qt 的必要性之前, 先来了解下 Qt 的发展历史:
1991年,
文章首发
【重学C++】02 脱离指针陷阱:深入浅出 C++ 智能指针
前言
大家好,今天是【重学C++】系列的第二讲,我们来聊聊C++的智能指针。
为什么需要智能指针
在上一讲《01 C++如何进行内存资源管理》中,提到了对于堆上的内存资源,需要我们手动分配和释放。管理这些资源是个技术活,一不小