在M1芯片上编译,运行和调试ucore

2022-06-12
阅读 2 分钟
3.3k
M1芯片是2020年之后推出的全新适配于Macbook的Arm64芯片。因为底层的指令集与x86_64不同,因此面临着很多兼容性的问题。截止开始写博文的时候,M1芯片已经经历了接近2年的磨合期,日趋完善。

C++的移动构造函数和移动赋值运算符

2022-03-25
阅读 3 分钟
3k
在 C++ 11 标准之前(C++ 98/03 标准中),如果想用其它对象初始化一个同类的新对象,只能借助类中的复制(拷贝)构造函数。在C++11中,引入了右值引用,提供了左值转右值的方法,避免了对象潜在的拷贝。而移动构造函数和移动赋值运算符也是通过右值的属性来实现的。直观的来讲,移动构造就是将对象的状态或者所有权从一...

【golang】go语言中map导致的内存泄漏问题

2022-02-09
阅读 2 分钟
4.4k
在 Golang 中的 map 结构,在删除键值对的时候,并不会真正的删除,只是标记当前的key状态为empty。我们下面的程序作为例子,看看当我们在删除map中键值对时的内存变化,并了解如才能真正实现对键值对的垃圾回收。

三种std::vector并发安全的设计思路

2022-01-24
阅读 4 分钟
10.7k
vector扩容时,内存位置发生改变导致Segmentation fault错误。因为vector在扩容时会将内容全部拷贝到新的内存区域中,原有的内存区域被释放,此时如果有线程依然在向旧的内存区域读或写就会出问题。

【C/C++实用工具】内存相关问题排查工具---cppcheck与valgrind

2022-01-16
阅读 4 分钟
3.4k
内存泄露 当程序员使用new(或malloc)关键字分配内存而忘记使用 delete (或free)函数或 delete[] 运算符释放内存时,C++ 中就会发生内存泄漏。在 C++ 中使用错误的删除运算符会发生内存泄漏最多的情况之一。delete 运算符应用于释放单个分配的内存空间,而 delete [] 运算符应用于释放数据值数组。内存泄漏对于很多不...

【C++编译】cmake简明教程

2022-01-14
阅读 2 分钟
3.5k
CMake 是一个开源、跨平台的工具系列,旨在构建、测试和打包软件。CMake 用于使用简单的平台和编译器独立配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机 makefile和工作区。