DefaultDeleter 结构体,这是一个默认删除器,用于释放 UniquePtr 持有的资源。 - 第一个模板是一般情况,用 delete 释放单个对象。 - 第二个模板是数组的偏特化版本,用 delete[] 释放数组。 - 第三个模板是 FILE 类型的全特化版本,用 fclose 关闭文件指针。 template<classT>structDefaultDeleter{voidoperator()(...
swap与数组 02:08 C++初级内存管理:move、exchange与数组 00:44 C++初级内存管理:共用体 07:30 C++初级内存管理:共用体简单练习【洛谷 P1100】 03:09 C++初级内存管理:初识大小端【A】 01:50 C++初级内存管理:初识大小端【B】【判断大小端的常用代码】 01:05 数位动态规划基础:穷举1到n位数 09:46 数位...
因为std::unique_ptr强调唯一所有权,所以它不支持拷贝构造函数和拷贝赋值运算符,但支持移动构造和移动赋值。 3、数组形式。 std::unique_ptr还支持数组形式,用法为std::unique_ptr<T[]>,适用于动态分配的数组资源管理。 4、嵌套指针。 当需要管理指向动态分配对象的指针的指针时,可以使用std::unique_ptr<std::u...
在上述的智能指针使用中,我们通过传入delete的函数,这里可以采用更优雅的方式:通过结构体的运算符重载达到delete函数的效果 #include<iostream>#include<memory>using namespace std;typedefstruct_package{unsignedchar*data;intlength;}package_t;voidrelease_package(package_t*package){cout<<"release_package"<<endl;...
-结构体不可以继承,类可以。C++中结构体也可以继承。 malloc和new的区别? malloc和free是标准库函数,支持覆盖;new和delete是运算符,并且支持重载。 malloc仅仅分配内存空间,free仅仅回收空间,不具备调用构造函数和析构函数功能,用malloc分配空间存储类的对象存在风险;new和delete除了分配回收功能外,还会调用构造函数和析...
《现代C++编程入门》第21集:使用基于范围的for语句循环累加原始整数数组的元素值并输出——《刚哥伴读会》 02:25 《现代C++编程入门》第22集:使用基于范围的for语句累加原始整数数组范围的元素值并输出——《刚哥伴读会》 02:15 《现代C++编程入门》第23集:使用while语句计算阶乘——《刚哥伴读会》 03:20 《...
在《C++11 shared_ptr智能指针》的基础上,本节继续讲解 C++11 标准提供的另一种智能指针,即 unique_ptr 智能指针。 作为智能指针的一种,unique_ptr 指针自然也具备“在适当时机自动释放堆内存空间”的能力。和 shared_ptr 指针最大的不同之处在于,unique_ptr 指针指向的堆内存无法同其它 unique_ptr 共享,也就...
定义一个表示时间事件的结构体structTimeEvent{inttime;// 触发事件的时间点(相对时间,单位秒)std::...
只声明了结构体student,但是并没有定义,所以是一个 incomplete type,所以sizeof无法执行。 回到unique_ptr,现在我们知道unique_ptr的报错链路是unique_ptr->delete->sizoef,也就是sizeof才是罪魁祸首。所以当Deleter非默认时,就不一定需要知道类型的析构函数。比如下面这样: ...
在《C++11 shared_ptr智能指针》的基础上,本节继续讲解 C++11 标准提供的另一种智能指针,即 unique_ptr 智能指针。 作为智能指针的一种,unique_ptr 指针自然也具备“在适当时机自动释放堆内存空间”的能力。和 shared_ptr 指针最大的不同之处在于,unique_ptr 指针指向的堆内存无法同其它 unique_ptr 共享,也就...