![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 50
CodeWithMe
一直在学习的软件菜鸟~
Target: 栈溢出工程师
展开
-
【C/C++】内存相关
起源:ptmalloc起源于Doug Lea的malloc实现,并由Wolfram Gloger进行改进,以支持多线程。目标:ptmalloc的主要目标是为多线程应用程序提供高效的内存分配和释放。名称含义:“pt”代表“pthreads”,指的是POSIX线程库,表明其支持多线程的特性。ptmalloc作为glibc中的默认内存分配器,在Linux系统中扮演着重要角色。它通过一系列机制来提高内存分配和释放的效率,并支持多线程应用程序。原创 2024-07-11 23:10:21 · 930 阅读 · 0 评论 -
C++ 杂七杂八
new -> 失败,bad_alloc异常malloc -> 失败,返回nullptroperator new/delete 可重载, c++运算符malloc/free 不允许重载,标准库函数递增/减前置 -> 引用后置 -> 对象(值)define vs typedef无循环/无条件判断/函数体小全特化 template<>声明原创 2024-07-01 23:13:23 · 246 阅读 · 0 评论 -
[C++] utils整理
c++ 基础工具整理原创 2024-06-28 00:18:02 · 159 阅读 · 0 评论 -
软开面试介绍模板
基本信息姓名教育背景(学校、专业、毕业时间)工作经验(如有)技能与专长编程语言(如Java、Python、C++等)的掌握程度框架和库(如Spring Boot、Django、React等)的使用经验版本控制工具(如Git)的熟练使用数据库知识(如MySQL、PostgreSQL、MongoDB等)自动化测试和调试技能操作系统和服务器管理(如Linux、Windows Server)其他相关技术或工具(如Docker、Kubernetes、AWS等)项目经验。原创 2024-06-25 13:33:17 · 461 阅读 · 0 评论 -
【C++】future/promise
需要从线程中返回异步任务结果情形时,c++11之前:使用指针在线程间共享数据。传递一个指针到新的线程中,该线程在其中设置数据,直到主线程继续等待使用条件变量。当新线程设置数据并通知条件变量时,主线程将唤醒并从指针处获取数据;C++11提供future类模板,future对象提供访问异步操作结果的机制。分类唯一期望(unique futures, std::future)实例只能与一个指定事件相关联;原创 2024-06-24 13:46:17 · 168 阅读 · 0 评论 -
【C/C++】告警及报错问题收集
C/C++ warning error原创 2024-06-24 13:12:37 · 242 阅读 · 0 评论 -
【C++】属性
这个属性在C++17中被引入,主要是为了增加代码的可读性和安全性。它特别有用于那些返回错误代码或状态信息的函数,因为忽略这些返回值可能会导致潜在的问题。调用没有使用返回值,因此编译器可能会发出警告(取决于编译器的设置和编译器的实现)。是一个属性(attribute)用于建议调用者不应该忽略(discard)函数或方法的返回值。的函数的返回值,代码仍然可以编译和运行。但是,为了代码的可读性和安全性,最好遵循这个建议。(通常是警告级别,而不是错误),如果调用者没有使用或检查该函数的返回值。原创 2024-06-24 00:09:18 · 139 阅读 · 0 评论 -
【C++】移动语义
C++ 移动语义简介原创 2024-06-24 00:07:41 · 412 阅读 · 0 评论 -
【C/C++】常量定义
在某些情况下仍然有用(特别是与旧的C代码库交互时),但在现代C++编程中,应优先使用。都用于定义常量,但它们之间存在显著的差异。来定义常量表达式,以提高代码的安全性、可读性和可维护性。原创 2024-06-22 22:34:16 · 341 阅读 · 0 评论 -
【框架】gRPC学习笔记
第一步:熟悉代码第二步:尝试移植。原创 2024-06-22 17:57:56 · 118 阅读 · 0 评论 -
【趣味测试】
由于计算机的内存是有限的,所以浮点数并不能精确地表示所有的实数。当我们尝试在计算机中存储或计算浮点数时,它们通常会被转换为最接近的二进制表示形式,这可能会导致微小的精度损失。在二进制中,有些十进制小数(如0.1和0.2)不能精确地表示,因此它们会被存储为最接近的二进制浮点数。当这些不精确的浮点数相加时,结果可能会与预期的精确值略有偏差。在大多数编程语言中,0.1 + 0.2 == 0.3 的结果为 false 并不是因为这两个数在数学上不等于0.3,而是因为浮点数的表示和计算存在精度问题。原创 2024-06-19 21:27:13 · 262 阅读 · 0 评论 -
【C++】编程核心概念——核心特征
在面向对象的设计中,封装、继承和多态通常一起使用,以创建模块化、可重用和可扩展的代码。封装隐藏了实现细节,继承实现了代码重用和层次化分类,而多态则提供了在运行时根据对象类型执行不同方法的灵活性。这些特性共同构成了面向对象编程的基础,使得C++等面向对象语言能够处理复杂的现实世界问题。在C++中,封装、继承和多态是面向对象编程的三大核心概念。这些特性为程序员提供了一种创建和管理复杂系统的方法,同时保持了代码的模块化、可重用性和可扩展性。原创 2024-06-18 01:00:52 · 424 阅读 · 0 评论 -
【C++】内存管理
在C++中有更多的语义和复杂性,因为它涉及到调用对象的析构函数。函数最终都会调用相同的底层系统调用来分配和释放内存(如。尽管它们的目的都是为了释放动态分配的内存,但。提供了额外的类型安全性和资源管理特性,这是C的。在大多数现代操作系统和编译器上,C++的。有相似的内存释放操作,但它并不是直接调用。操作符的底层实现并不直接调用C语言中的。,而是有自己的实现和语义。原创 2024-06-17 00:36:58 · 278 阅读 · 0 评论 -
【C++】类相关知识
在某些情况下,如果你定义了移动构造函数或移动赋值运算符,并且没有显式地定义默认构造函数,编译器可能认为默认构造函数是不必要的,因此可能不会为它生成。中含有无法默认初始化的成员变量(比如引用类型、没有默认构造函数的类类型等),并且你没有提供自定义的默认构造函数,那么编译器会尝试为你生成一个默认构造函数,但会因为无法初始化这些成员而失败,并导致默认构造函数被隐式删除。来显式地要求编译器生成默认构造函数,但条件不满足(比如因为上述的无法默认初始化的成员变量),那么编译器会报错而不是生成默认构造函数。原创 2024-06-16 22:51:44 · 452 阅读 · 0 评论 -
C++11 面试题整理
C++面试题笔记整理原创 2024-06-11 21:30:45 · 658 阅读 · 0 评论 -
【无标题】
C++ & class & polymorphic1 作用2 分类2.1 静态多态编译期确定实现方式:函数重载(函数名相同,函数列表(返回值)不同)[注意:不能仅返回值不同]2.2 动态多态运行期确定实现方式:虚函数重写关键:虚函数表原创 2024-06-09 01:06:35 · 89 阅读 · 0 评论 -
Class
原因:每一个Derived Class Destructor都会被编译器加以扩张,以静态调用的方式调用其“每一个Virtual Base Class”和“上一层Base Class”的destructor。封装是编译期的概念,是针对类型而非对象的,在类的成员函数中可以访问同类型实例对象的私有成员变量.。注:C++保证:继承体系中每一个class object的destructor都会被调用。场景1:类的拷贝构造函数可以访问另一个类对象的私有成员。要点1:基类析构函数声明为虚函数,但不能为pure。原创 2023-04-21 00:09:55 · 100 阅读 · 0 评论 -
【C++】泛型算法
泛型算法笔记原创 2022-07-23 22:26:19 · 205 阅读 · 0 评论 -
【C++】stream
iostream原创 2022-07-17 23:39:56 · 228 阅读 · 0 评论 -
【C++】C8_结构、联合与枚举
0 引言structunionenumenum class1 structtype特点数组相同类型元素的集合结构体任意类型元素的集合默认情况下,比较运算符不适用于结构体,除非用户自己定义这些运算符struct对象中,成员按照生命的顺序依次存放。注意字节对齐。如果有空洞,最终计算的sizeof(),可能就不是简单的累加。类型名字只要出现就能使用,eg.struct Link { Link* prev; Link* succ;};但是只有声明原创 2021-10-13 01:21:57 · 280 阅读 · 0 评论 -
【C++】C7_指针、数组与引用
0 概述1 引用1.1 左值、右值注:当前看到的地方,后期补充其他内容。近乎完美的swap// 只能交换左值tempate<class T>void swap(T& a, T& b){ T tmp{move(a)}; a = move(b); b = move(tmp);}该过程不执行拷贝操作,只进行移动操作。move(x)并不是真正的移动x,只是为x创建了一个右值引用。扩展swap功能:// 增加重载函数template<class T原创 2021-10-13 00:20:39 · 122 阅读 · 0 评论 -
cpp笔记_20210328
1 构造函数中避免隐式转换关键字:explicitclass vector { // ... explicit vector(int); // ...};2 const成员获取class vector { // ... double& operator[](int n); // 用于非const vector double operator[](int n) const; // 用于const vector // ...};...原创 2021-03-28 22:34:43 · 63 阅读 · 0 评论 -
【编译】错误记录
1 const形参形参中含constint Test::test(const Date& d){ return y_; }报错:error: passing ‘const Date’ as ‘this’ argument discards qualifiers解决方案:int Test::test(const Date& d) const{ return y_; }原创 2021-03-24 00:01:59 · 169 阅读 · 0 评论 -
Cmake学习记录
CMake学习记录1 CMake环境搭建待更新2 单文件示例文件1:main.cpp#include <iostream>using namespace std;int main(){ cout << "new trial!\n" << endl; return 0;}文件2:CMakeLists.txtproject(hello)set(src_list main.cpp)add_executable(hello ${src_lis原创 2021-02-25 00:13:42 · 73 阅读 · 0 评论 -
Cpp Primer 第4章
编号 说明 1 表达式 由一个或者多个运算对象组成,对expression求值将得到一个result 2 一元运算符 二元运算符 3 重载运算符 4 左值和右值 lvalue可以位于赋值语句左侧,rvalue不可 lvalue表达式的求值结果是一个对象或者函数 当一个...原创 2020-10-11 23:53:25 · 111 阅读 · 0 评论 -
Cpp Primer 学习笔记 第3章
编号 说明 1 using 声明 头文件中一般不应该使用using声明 2 标准库类型string #include<string> using std::string; 初始化方式: string s1; string s2(s1); string s2 = s1; s...原创 2020-10-10 00:51:35 · 158 阅读 · 0 评论 -
Cpp Primer 学习笔记 第2章
编号 说明 1 基本内置类型: (1)算术类型 (char/int/bool/float/double/……) signed/unsigned 类型转换 当算术表达式中既有int值又有uint值时,int值转换为uint值 字面值常量 (2)空类型(void) 2 变量 初始值 列表初始化 int ...原创 2020-10-10 00:50:41 · 286 阅读 · 0 评论 -
Cpp Primer 学习笔记 第1章
编号 说明 1 流 iostream (istream + ostream) std::cin std::cout 2 控制流 while for if 3 输入数量不定 while(std::cin >> x) 4 s...原创 2020-10-10 00:50:00 · 141 阅读 · 0 评论 -
VSCode下载安装
一、VSCode软件下载及安装免费的,官网下载就行。二、MinGW下载及安装下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/界面:选择x86_64-posix-sjlj,下载后是一个安装包,解压后直接可以用,需要将安装目录/mingw64/bin添加到系统环境变量中的path下。三、插件安装安装C++插件四、配置文件(最重要)可以在.vscod...原创 2020-08-28 01:36:50 · 675 阅读 · 0 评论 -
unsigned int 与 int 的运算
unsigned int 与 int 型运算后,得到unsigned int型变量。验证程序:#include <stdio.h>int main(){ unsigned int a = 10; int b = -11; if (a + b > 0) printf("result is : unsigned int\n"); else printf(...原创 2019-08-21 22:28:40 · 1849 阅读 · 0 评论