为什么要跟踪内存分配?关于内存的事情是很重要的,计算机和内存是紧密相连的,如果你只有一个cpu,而没有ram没有内存就什么都做不了。而在C++中跟踪内存分配的重要性主要体现在以下几个方面:避免内存泄漏:C++中的动态内存分配(通过new和delete操作符)需要程序员手动管理内存。如果不正确地释放已分配的内存,可能会导致内存泄漏,尤其是在长时间运行的程序中。 ......
20
0
0
2024-09-23
一、C++ auto类型推导完全攻略在 C++11 之前的版本(C++98 和 C++ 03)中,定义变量或者声明变量之前都必须指明它的类型,比如 int、char 等;但是在一些比较灵活的语言中,比如 C#、JavaScript、PHP、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自己去推导,这就让代码的编写更加方便 ......
21
0
0
2024-09-16
前言C++动态内存管理涉及使用new和delete操作符来动态分配和释放堆内存。new用于在堆上分配内存并初始化对象,delete用于释放先前分配的内存。此外,C++还提供了智能指针如std::unique_ptr和std::shared_ptr来自动管理内存,以避免内存泄漏和悬挂指针。这些智能指针在超出作用域时会自动删除其所指向的对象。一、C/C++内存分 ......
86
0
0
2024-09-01
介绍C Linux实现线程池技术作者第一次编写的线程池,推荐使用的时候修改thread_manager函数中部分逻辑支持库#include <stdlib.h> #include <pthread.h> #include <string.h> #include <time.h> #include &lt ......
61
0
0
2024-08-22
赋值运算符重载前言一、运算符重载定义实例注意要点函数重载与运算符重载的区别不同点相似点总结二、赋值运算符重载赋值运算符重载格式赋值运算符重载要点重载要点传值返回和传址返回要点三、前置++和后置++重载示例概念四、深挖operator友元函数模拟实现友元函数前言类的6个默认成员函数:如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类 ......
58
0
0
2024-08-21
目录1.C/C++内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.c++内存管理方式3.1new/delete对内置类型的操作3.1.1抛异常3.2new/delete对自定义类型的操作4.operator new与operator delete函数5.new和delete的实现原理6.简单了解定位new表达式( ......
61
0
0
2024-08-20
C++的引用前言C++的引用是别名,它为已存在的对象提供了另一个名称。一旦引用被初始化指向一个对象,它就不能再指向其他对象。引用必须在声明时初始化,并且必须初始化为有效的对象或字面量。引用通常用于函数参数和返回值,以实现按引用传递和返回。此外,它们也常用于大型对象和数组,以避免复制的开销。C++11引入了右值引用和移动语义,允许更高效的资源管理和性能优化。总 ......
117
0
0
2024-08-04
作者:boreholehu前言对于一个C++程序员来说,可能更多是是每天都在跟各种上层语义、设计模式、软件方法等等在打交道。但对于「一个C++程序是如何运行在机器上的」这件事可能会比较陌生。有时,遇到一些问题,在宏观角度看起来可能比较难以解释,但其实从底层出发,就能发现这个问题其实根本不算问题。类似的问题有:空指针到底能不能访问?(int *p = null ......
153
0
0
2024-07-31
个人主页 : zxctscl如有转载请先通知1. 前言在之前已经介绍了vector【C++】vector介绍,这次来看看它的模拟实现。2. vector源码来看一下vector源码:这里的成员变量都是iterator,而iterator是value_type*,看源码中value_type*又是T。再来看一下构造,为了方便知道它最开始的初始化。来看一下pus ......
112
0
0
2024-07-31
继承一、继承的基础介绍继承是面向对象三大特征之一有些类和类之间存在特殊关系,如:我们可以发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的个性。这个时候我们就可用继承的技术减少重复代码。 继承的基本语法 如很多网站中都有公共的头部,公共的底部,公共的左侧列表,只有中心内容不同,接下来用普通写法和继承写法来实现网页(我以CSDN的网页为例)中的内 ......
153
0
0
2024-07-15
继承一、继承的基础介绍继承是面向对象三大特征之一有些类和类之间存在特殊关系,如:我们可以发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的个性。这个时候我们就可用继承的技术减少重复代码。 继承的基本语法 如很多网站中都有公共的头部,公共的底部,公共的左侧列表,只有中心内容不同,接下来用普通写法和继承写法来实现网页(我以CSDN的网页为例)中的内 ......
177
0
0
2024-07-15
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QProcess组件实现针对进程的控制管理等。当你在使用Qt进行跨平台应用程序开发时,经常需要与外部进程进行交互,这时就可以利用Qt的QProcess模块。QProc ......
151
0
0
2024-07-08
顺序表前言顺序表是一种常见的线性数据结构,它使用一段连续的存储单元依次存储数据元素。这种数据结构的特点是逻辑上相邻的元素在物理存储位置上也相邻,因此可以快速地访问表中的任意元素。顺序表的实现通常依赖于数组,数组是一种静态的数据结构,一旦创建,其大小就是固定的。这意味着在顺序表中插入或删除元素可能会导致空间的浪费或不足。例如,如果在一个已经满了的顺序表中插入一 ......
142
0
0
2024-07-02
算法的时间复杂度和空间复杂度前言算法的时间复杂度和空间复杂度是评估算法性能的两个重要指标。时间复杂度主要关注算法执行过程中所需的时间随输入规模的变化情况,而空间复杂度则关注算法执行过程中所需的最大存储空间或内存空间。对于时间复杂度,它通常表示为一个大O表示法,如O(n)、O(n^2)、O(log n)等,其中n代表输入规模的大小。一个优秀的算法应该具有较低的 ......
117
0
0
2024-07-02
计算机二级C语言考前复习资料(详细版)前言计算机二级C语言考试是许多计算机科学专业学生及编程爱好者的必经之路。它不仅是对基础编程知识的检验,更是对逻辑思维和问题解决能力的挑战。通过这门考试,考生需要掌握C语言的基本语法、数据类型、控制结构、函数、数组、指针以及文件操作等核心内容。为了顺利通过计算机二级C语言考试,考生首先需要系统地学习C语言的基础知识。从变量 ......
123
0
0
2024-07-01