08 2021 档案
摘要:一、不能使用一个原始地址初始化多个共享智能指针 如下代码 #include "stdafx.h" #include <iostream> #include <windows.h> #include <memory> using namespace std; struct Test { shared_
阅读全文
摘要:弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手,它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 ->,因为它不共享指针,不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数,它的主要作用就是作为一个旁
阅读全文
摘要:std::unique_ptr 是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针 一、初始化 (1)构造函数初始化: 可以通过它的构造函数初始化一个独占智能指针对象,但是不允许通过赋值将一个 unique_ptr 赋值给另一个 unique_ptr。 // 通过构造函数初始化对象 un
阅读全文
摘要:一、获取原始指针 #include "stdafx.h" #include <iostream> #include <windows.h> #include <memory> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { in
阅读全文
摘要:共享智能指针是指多个智能指针可以同时管理同一块有效的内存,共享智能指针 shared_ptr 是一个模板类 一、shared_ptr 的初始化 (1)通过构造函数 std::shared_ptr<T> 智能指针名字(创建堆内存); #include "stdafx.h" #include <iost
阅读全文
摘要:在 C++ 中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smart pointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露。智能指针的核心实
阅读全文
摘要:一、作用 std::bind用来将可调用对象与其参数一起进行绑定。绑定后的结果可以使用std::function进行保存,并延迟调用到任何我们需要的时候。通俗来讲,它主要有两大作用: (1)将可调用对象与其参数一起绑定成一个仿函数。 (2)将多元(参数个数为n,n>1)可调用对象转换为一元或者(n-
阅读全文
摘要:一、错误如下: 这个错误是说在0x01F641A8处发生堆问题,下一句是说在堆buffer末尾内存中写入了数值。 二、错误原因 这个问题显然在动态分配、释放时内存才会发生的。在解决这个问题问题前首要要了解在new和delete时堆中的内存是怎么分配的,是什么内存结构? 引用《c++反汇编与逆向分析技
阅读全文
摘要:一、现象 点击调试,程序立马退出,输出窗口显示:未找到依赖dll。 二、原因 程序引用了第三方库,程序没有找到库。 三、解决 方法1:”将dll放置可执行目录下。 方法2:设置库目录如下
阅读全文
摘要:一、实验代码 1 #include <iostream> 2 #include <windows.h> 3 4 int main() 5 { 6 while (true) 7 { 8 int* arr = new int[1024]; 9 std::cout << arr << std::endl;
阅读全文