撰写于 2024
  • pragma 指令

    Tuesday, September 17, 2024 在 c++笔记

    描述 在 C++ 中,#pragma 是一种编译器指令,用于向编译器提供特定的编译指示。它并不是 C++ 标准的一部分,而是由不同编译器实现的,因此它的作用和支持的指令可能会因编译器 的不同而有所差异。 #pragma 是一种编译器指令,用于执行特定的编译器行为,常用于内存对齐、警告控制、优 化等任务。由于它不是 C++ 标准的一部分,因此其使用和功能通常依赖于具体的编译器。 在跨平台开发时需要特别注意,尽量避免编译器特定的 #pragma 指令,以提高代码的可移 植性 1. #pragma …

    更多

  • include 的细节

    Tuesday, September 17, 2024 在 c++笔记

    #include “headername” 和 #include <headername> 的区别 #include "headername" 和 #include <headername> 的主要区别在于头文件的搜索路 径。虽然在包含标准库文件(如 iostream)时,两者的行为通常没有区别,但在实际开发 中,两者有不同的语义,尤其是在包含自定义头文件时。 1.#include …

    更多

  • C 动态分配二维数组的内存

    Sunday, July 21, 2024 在 c++笔记

    指针数组 使用指针数组, 每个指针指向一维数组的起始位置 #include <stdio.h> #include <stdlib.h> int main() { int rows = 3; int cols = 4; // 分配行指针数组 double **array = (double **)malloc(rows * sizeof(double *)); if (array == NULL) { printf("Memory allocation …

    更多

  • 在 C 函数中建议 move data to heap 时

    Saturday, July 20, 2024 在 c++笔记

    malloc malloc(memory allocation)函数用于分配指定字节数的内存,并返回指向这块内存的指针。内存未初始化。 #include <stdlib.h> int main() { // 分配内存用于存储10个整数 int *array = (int *)malloc(10 * sizeof(int)); if (array == NULL) { // 处理内存分配失败的情况 return 1; } // 使用分配的内存 for (int i = 0; i …

    更多

  • 比较 boost 和 stl

    Sunday, June 02, 2024 在 c++笔记

    Boost 和 STL(Standard Template Library)是两个非常重要的 C++ 库,它们各自提供了 丰富的功能和工具,但在用途、设计哲学和使用场景上有一些显著的区别。下面是对 Boost 和 STL 的详细比较: STL(Standard Template Library) 标准库的一部分:STL 是 C++ 标准库的一部分,由 ISO/IEC 标准化组织定义。所 有符合标准的 C++ 编译器都必须提供 STL。 核心组件:STL 主要包含容器、算法和迭代器三个核心组件。 …

    更多

撰写于 2023
撰写于 2022
  • C++ 是如何实现面向对象编程的

    Thursday, October 27, 2022 在 c++笔记

    面向对象的三个特性 封装:将对象的状态(数据成员)和行为(成员函数)捆绑在一起,并控制对它们的访问。封装的主要目的是隐藏类的内部实现细节,并仅暴露必要的接口供外部使用。这样可以保护数据,防止外部代码意外或恶意地改变对象的状态。 数据成员可以被声明为 private、protected 或 public。 成员函数通常也是 public 的,以便用户可以调用这些函数来操作对象。 使用 private 和 protected 修饰符可以限制对数据成员的直接访问。 继承:允许创建新的类(称为派生类或子 …

    更多

  • 内存泄漏

    Saturday, October 15, 2022 在 c++笔记

    什么是内存泄漏 程序块在[堆]中申请的[动态内存], 在程序块使用完成后没有得到[及时释放], 从而导致了堆中可使用的内存越来越少的现象 内存泄漏是逻辑上的概念, 指在程序运行期间, 总内存的可复用率变低的问题 内存泄漏主要指在[堆]上分配的变量所占用的内存, 因为[栈]中分配的变量, 会随着函数退出时自动回收. 而堆是动态分配的 不仅要考虑 malloc, calloc, realloc, new 等分配的内存是否得到了释放, 也要考虑使用系统资源或者在[堆]中创建的对象 内存泄漏的检测与预防 …

    更多

  • 大端和小端

    Saturday, October 15, 2022 在 c++笔记

    什么是字节序(Endian-ness) 两种字节序的形式 小端(Little-Endian) 大段(Bit-Endian) 字节序的转换

    更多

  • 编译与链接

    Saturday, October 15, 2022 在 c++笔记

    什么是编译 C++ 是一种静态类型的编程语言,CPU 无法直接执行文件中的各行命令, 这意味着在程序执行之前需要通过 编译过程 将其源代码转换为机器码. 编译器会读取程序的源文件 .cpp, 将其翻译为可执行文件 ELF, ELF 文件可以经过操作系统进行加载执行 编译的过程 常见的编译过程分为四个过程: 编译预处理, 编译, 汇编, 链接 编译预处理:在预编译过程中主要处理源代码中的预处理指令,比如引入头文件#include,去除注释,处理所有的条件编译指令#ifdef, #ifndef, …

    更多