随笔分类 - C++杂记
智能指针之unique_ptr
摘要:裸指针即便使用了delete也有可能内存泄漏。智能指针则不会 下面的例子假定p->foo()抛出了异常就不会执行delete p从而造成内存泄漏。 值传递: 1 void pass_uo1(int value) 2 { 3 value = 9; 4 } 5 int main() 6 { 7 auto
阅读全文
智能指针之share_ptr
摘要:内存泄漏: 当指针p和变量y被释放掉,new所开辟的内存不会被释放,这就是内存泄漏。 shared_ptr: ***注意***use_count是share_ptr的方法,用来记录有多少个指针指向该内存,reset关键字表示重置使指针不再指向原来的对象(而该指针自动指向nullptr)对象被释放(所
阅读全文
指针之空指针野指针
摘要:空指针(指针变量指向内存编号为0的空间,内存空间为0~255是不可以被访问的) 1.初始化指针为空指针最好的方式:int *p=nullptr; 2.空指针的作用是: 当不清楚指针应该指向何处时,就把它初始化为nullptr。 3.空指针的注意事项: 将变量赋值给空指针的操作是错误的,即便变量值恰好
阅读全文
指针基础知识
摘要:1.指针的4种状态 指向一个对象 指向近邻对象所占空间的下一个位置 空指针,意味着指针没有指向任何的对象 无效指针(野指针),也就是上述情况之外的其他值 对于第二种情况这里加以说明: 其实就是指向一个对象的后一位置,这个位置是不存在对象的,对此指针解引用将会是未定义的结果。这种指针主要作用是用来标识
阅读全文
内存四区之栈区局部变量和堆区局部变量
摘要:写在前面: 返回栈区局部变量的地址是错误的 可以返回堆区局部变量的地址 返回值的理解: 我们知道,被调函数运行结束后才会返回主调函数,但是被调函数运行结束后系统为被调函数中的局部变量分配的内存空间就会被释放。也就是说,return 返回的那个值在被调函数运行一结束就被释放掉了,那么它是怎么返回给主调
阅读全文
字符串之字符串的拼接
摘要:1 string teacher = "teach_"; 2 string name = "ab"; 3 teacher += name[0]; 4 cout << teacher << endl; 打印结果:
阅读全文
每次生成不同的随机数
摘要:1 srand((unsigned int)time(NULL)); 2 int num=rand() % 100; srand((unsigned int)time(NULL));为时间戳函数,要使用的时候要加入#include<ctime>头文件
阅读全文
如何将图像像素值写入excel表格
摘要:最近做项目的时候想按照图像的格式将图像的像素值写入文件中方便查看每一点的像素值,可是写入.txt文件发现写入的是这个样子的,有一大片空白: 程序如下: ofstream ofs1; ofs1.open("gray.txt", ios::out); int i = 0; for (int a = 0;
阅读全文
友元的使用(改进)
摘要:之前写了一篇关于友元使用的博客(友元的使用 - 小凉拖 - 博客园 (cnblogs.com))但是发现并不好用,原因是:当我把Grad类作为SemiGlobalMatching的友元时,Grad类中并不能使用SemiGlobalMatching赋值好了的成员属性(比如说height_这个属性),也
阅读全文
友元的使用
摘要:最近在做Census变换的项目中,在原先的代码基础上添加了一个计算梯度的文件,文件中新建了一个Grad类,但是又不想重新开辟内存(感觉会节省空间)想直接使用SemiGlobalMatching中的成员属性 /** \brief 影像宽 */ sint32 width_; /** \brief 影像高
阅读全文
成员属性的理解
摘要:情况1: 该成员属性的值是某成员函数中计算的结果: 在SemiGlobalMatching.h(130)的SemiGlobalMatching类中定义一个成员属性(可以私有化) 1 void* census_left_; 在SemiGlobalMatching.cpp(63)的成员函数“SemiGl
阅读全文
指针的引用(附加地址传递)
摘要:#图解 轻松看懂「指针的引用*&」 - 知乎 (zhihu.com) 注意“举个栗子”中的第一个代码:(以一个更为简单的例子为例) 情况1: 1 void swap(int* p1, int* p2) { 2 3 int temp = *p1; 4 *p1 = *p2; 5 *p2 = temp;
阅读全文
二维数组和单通道Mat相关问题
摘要:我们分别将二维数组第一行的首地址和单通道Mat第一行的首地址赋给指针: 1 int a[2][2] = 2 { 3 {1,2}, 4 {3,4} 5 }; 6 7 int* p = a[0]; 8 cout << p[2] << endl; 结果为3 1 Mat m = (Mat_<int>(2,
阅读全文
浙公网安备 33010602011771号