自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 静态建立和动态建立

在编程中,静态分配(Static Allocation)和动态分配(Dynamic Allocation)是两种不同的内存管理方式,核心区别在于内存分配时机、生命周期和管理方式。• 内存位置:通常存储在数据段(全局/静态区)或栈(局部静态变量)。• 缺点:管理复杂(需手动释放)、有运行时开销(分配/释放操作)。• 分配时机:编译时或程序启动时(如全局变量、静态变量)。• 优点:高效(无运行时开销)、安全(不会内存泄漏)。• 生命周期:从分配开始到显式释放为止(需手动管理)。

2025-05-21 16:11:26 326

原创 定义和声明的区别

在编程中,定义(Definition)和声明(Declaration)是两个相关但不同的概念,主要区别在于是否分配内存或实现细节。• 作用:告诉编译器某个标识符(变量、函数、类等)的存在及其类型,但不分配内存或提供具体实现。• 避免重复定义:通过声明允许多文件共享同一标识符,而定义仅在一处实现。• 作用:为标识符分配内存或提供具体实现(如函数体、类成员等)。• 声明通常出现在头文件(如C/C++)或需要提前引用的地方。• 定义同时也是声明(即定义包含声明的作用)。)中放定义(如函数实现、全局变量)。

2025-05-21 16:07:34 447

原创 push_back()和emplace_back()

等)用于在尾部添加元素的成员函数,但它们在实现方式和效率上有重要区别。在 C++11 及以后的代码中,对于已知构造参数的情况,两者性能几乎无差别,编译器会优化掉额外开销。这两个方法都是 C++ 标准库容器(如。• 当参数需要隐式转换时(更清晰)• 代码需要兼容 C++98。对于简单类型(如 int)• 已有构造好的对象要添加。• 当构造参数已知时。

2025-05-07 17:55:28 240

原创 std::move

是 C++11 引入的一个关键工具,用于实现高效的资源转移(移动语义)。它实际上并不移动任何数据,而是将对象转换为右值引用,从而允许移动操作的发生。是现代C++高效资源管理的基础工具,正确理解和使用它可以显著提升程序性能,特别是在处理大型对象或资源密集型操作时。许多情况下(如返回值优化),编译器会自动优化,不需要显式使用。• 启用移动:允许调用移动构造函数和移动赋值运算符。本身不执行任何移动操作,只是转换值的类别。• 转换语义:将左值转换为右值引用。不要移动局部变量后继续使用。const对象无法移动。

2025-05-07 17:23:25 267

原创 内存泄漏的检测

Valgrind 是一个强大的内存调试和性能分析工具集,而 C 运行时库 (CRT) 是 C/C++ 程序运行的基础库。不同平台的 CRT 实现(如 glibc、MSVCRT、ucrt)在 Valgrind 下的表现可能略有不同,但核心检测功能都能正常工作。Valgrind 是检测 CRT 相关内存问题的强大工具,正确使用可以显著提高代码质量和稳定性。Valgrind 与 C 运行时库 (CRT) 的关系及使用。现象:Valgrind 报告 CRT 内部的内存使用为问题。Valgrind 的基本功能。

2025-05-07 16:17:49 252

原创 std::string::npos

是 C++ 字符串操作中非常重要的一个概念,正确理解和使用它可以编写出更健壮的字符串处理代码。类的一个特殊静态常量,表示"不存在的位置"或"无效位置"。• 含义:表示字符串中不存在的索引位置。转换为无符号类型会变成最大值)当字符串查找操作失败时,返回。是 C++ 标准库中。

2025-05-07 15:40:16 689

原创 malloc和free的原理

是 C 标准库中的内存管理函数,它们管理着程序的堆内存。内存对齐:通常按 8 或 16 字节对齐分配的内存。• 如果找到的空闲块比请求的大,将其分割为两部分。线程局部存储:多线程环境下使用线程特定的内存池。地址计算:根据返回的指针计算出内存块头部地址。• 首先在空闲内存链表中查找足够大的空闲块。小块分配:对小内存请求使用特殊的高效分配器。• 外部碎片:空闲内存分散,无法满足大请求。• 如果是,合并它们成为一个更大的空闲块。• 如果空闲链表没有足够大的块,调用。• 内部碎片:分配的内存比请求的大。

2025-05-07 15:20:28 618

原创 bochs安装

bochs安装/configure->make之后报错缺少库文件,安装需要的库文件之后重新make,报错。解决方法:/configure之后重新安装了库的话,要重新/configure,然后再make。make: *** [Makefile:183:bochs] 错误 1。

2025-03-04 16:13:25 499

空空如也

空空如也

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

TA关注的人

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