自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Linux普通用户root用户之间的切换

通常不需要使用特定的命令,因为你可以直接通过命令行界面(CLI)输入该普通用户的用户名来切换到该用户。但是,为了避免潜在的权限问题,可以使用su(substitute user 或 switch user)命令来显式地切换到另一个用户。

2024-07-14 18:16:35 641

原创 new /delete和malloc/free

对于基本数据类型(或称为内置类型,如 char, int, double 等),new 和 delete 确实在行为上与C语言中的 malloc 和 free 类似,但它们在C++的上下文中具有更多的功能和安全性。综上所述,虽然对于内置类型而言,new/delete和malloc/free在功能上可能没有明显区别,但从安全性、可读性、可移植性和最佳实践的角度来看,new/delete是更好的选择。通过显式地分配和释放内存,我们可以更容易地跟踪和管理内存的使用情况,从而避免内存泄漏和其他与内存相关的问题。

2024-06-30 20:53:52 886

原创 结构体内存对齐相关

因为不同的硬件平台可能使用不同的大小端模式,所以在发送或接收数据时,需要确保数据的字节顺序在发送方和接收方是一致的。大端(Big-endian)模式下,数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中;小端(Little-endian)模式则相反,数据的低字节保存在内存的低地址中,而数据的高字节保存在内存的高地址中。如果数据跨越了两个或多个内存页,或者跨越了缓存行的边界,处理器可能需要额外的操作来访问这些数据,这会导致性能下降。不同的硬件平台和操作系统可能有不同的内存对齐要求。

2024-06-24 20:56:30 220

原创 为什么命名空间域和类域不会影响生命周期

对象的生命周期是由创建它的代码(如new关键字在许多编程语言中)和销毁它的代码(如垃圾回收机制或显式调用析构函数)决定的。在编程中,命名空间(Namespace)和类(Class)是两个不同的概念,它们与对象的生命周期(Lifecycle)有间接的关系,但通常不直接决定对象的生命周期。类的生命周期通常与程序的运行时间相同,但类的实例(对象)可以有自己的生命周期。命名空间只是代码的组织结构,它不会影响在命名空间中定义的对象或类的生命周期。对象的生命周期是由其创建和销毁的时间点决定的,这通常与类的定义无关。

2024-06-24 12:04:15 295

原创 产生临时变量的一些场景

例如,将 char* 类型的字符串字面量传递给需要 const std::string& 参数的函数时,编译器会创建一个 std::string 类型的临时变量来存储这个字符串。例如,将 double 类型的变量转换为 int 类型时,会创建一个 int 类型的临时变量来存储转换后的值。当将右值(没有内存空间,无法直接访问的数据对象)赋值给const引用时,编译器会创建一个临时变量来存储这个右值,并让const引用指向这个临时变量。在某些情况下,编译器可能会出于优化和性能考虑而创建临时变量。

2024-06-23 18:18:59 302

原创 运算符重载和函数重载的关系

运算符重载(Operator Overloading)和函数重载(Function Overloading)在C++等支持这些特性的编程语言中都是重要的概念,但它们服务于不同的目的并有着各自的定义和用法。尽管它们在某些方面可能看起来相似,但它们之间有一些关键的区别。

2024-06-22 11:29:39 116

原创 #include<iostream>,using namespace std,c++标准库之间的关系

在某些情况下可能很方便,但在大型项目或与其他代码库交互时,最好显式地使用std::前缀来引用标准库中的名称,或者只选择性地使用using声明来引入特定的名称。命名空间是一种避免命名冲突的方法,它允许你将相关的名称(如函数名、类名、变量名等)组合在一起。如果你的代码或第三方库中的名称与标准库中的名称相同,那么使用using namespace std;这是一个命名空间指令。在C++中,为了避免名称冲突,很多库都使用命名空间来组织它们的名称。是C++标准库中的一个头文件,它包含了用于输入输出的类和函数,如。

2024-06-21 21:36:52 412

原创 归并排序的时间复杂度和空间复杂度详细解释

归并排序(Merge Sort)是一种分治(Divide and Conquer)策略的排序算法。下面我将详细解释归并排序的时间复杂度和空间复杂度。

2024-06-19 11:21:00 325

原创 快速排序的时间复杂度和空间复杂度的详细解释

快速排序(QuickSort)是一种非常高效的排序算法,其平均时间复杂度为O(n log n),但在最坏情况下可能达到O(n^2)。每一层的时间复杂度为O(n)(因为需要遍历整个数组进行分区),所以总的时间复杂度为O(n) * h = O(n log n)。空间复杂度:最好情况下为O(log n)(递归栈),最坏情况下为O(n)(递归栈),额外空间为O(1)。在这种情况下,时间复杂度为O(n) + O(n-1) + ... + O(1) = O(n^2)。当子数组的大小为1时,递归结束。

2024-06-18 20:29:24 333 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除