必须要注意的 C++ 动态内存资源管理(五)——智能指针陷阱 十三.小心使用智能指针.         在前面几节已经很详细了介绍了智能指针适用方式.看起来,似乎智能指针很强大,能够很方便很安全的管理我们的资源.然而其实不然,如果不恰当的使用智能指针有时候会在很不起眼的地方造成内存泄漏.在这一节中主要介绍在使用智能指针过程中有哪些地方需要注意,以及 shared_ptr 在使用上的缺陷. 十四.使用智能指针的5个条款 条款1:不要把一个原生指针给多个shared_ptr或者unique_ptr管…
Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139.com/list-2.htmlsed命令行格式为:sed [-nefri] 'command' 输入文本/文件常用选项:    -n:取消默认的输出,使用安静(silent)模式.在一般的sed用法中,        所有来自STDIN的资料一般都会被列出到屏幕上.但如果加上-n参数后,则只有经过…
20145203盖泽双<网络对抗技术>实践五:MSF基础应用 1.实践目标 掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路.下面是我自己做的时候用的四个套路. (1)一个针对Windows XP系统的主动渗透攻击. (2)一个针对Windows XP系统中IE7的被动渗透攻击. (3)一个针对Windows XP系统中Adobe Reader v9的被动渗透攻击. (4)成功应用一个辅助模块. 2.实验后回答问题 (1)用自己的话解释什么是exploit,payload,…
Linux及安全实践五——字符集编码 一.ASCII码 在表中查找出英文字母LXQ相对应的十六进制数值为: 4c 58 51 在终端中输入命令:vim test1.txt 在vim页面输入命令:%!xxd 输完之后使用命令:%!xxd -r保存后即可看到如下结果: 退出vim编辑器,在终端输入命令:cat test.txt可以查看到test.txt中的内容 二.gb2312编码 在编码表中查找出李雪琦相对应的十六进制数值为: c0ee d1a9 e7f9 在进行vim编辑的时候,首先将终端的编码…
nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需要开发者创造大量的轮子来解决现实的问题. 知其然,并知其所以然这是程序员的天性.所以把常用的模块拿出来看看,看看高手怎么写的,学习其想法,让自己的技术能更近一步. 引言 express 是 nodejs 中最流行的 web 框架.express 中对 http 中的 request 和 respon…
为了解决C++内存泄漏的问题,C++11引入了智能指针(Smart Pointer). 智能指针的原理是,接受一个申请好的内存地址,构造一个保存在栈上的智能指针对象,当程序退出栈的作用域范围后,由于栈上的变量自动被销毁,智能指针内部保存的内存也就被释放掉了(除非将智能指针保存起来). C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使用时需添加头文件<memory>. shared_ptr使用引用计数,每一个shar…
unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_ptr<T> myPtr(new T); std::unique_ptr<T> myOtherPtr = myPtr; // error 但是unique_ptr允许通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,注意,这时它本身就…
1 .  通用函数可变参数模板 对于有些时候,我们无法确切的知道,函数的参数个数时,而又不想过多的使用所谓的函数重载,那么就可以效仿下面的例子: #include<iostream> #include<Array> void showall() { return; } template <typename R1 ,typename... Args> void showall(R1 var, Args...args) { std::cout << var &l…
本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用. 为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了或者在函数中没有执行到最后的delete语句就返回了,如果我们不在每一个可能跳转或者返回的语句前释放资源,就会造成内存泄露.使用智…
C++中指针申请和释放内存通常采用的方式是new和delete.然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存.下面简单说一下用法. 用法一: std::auto_ptr<MyClass>m_example(new MyClass()); 用法二: std::auto_ptr<MyClass>m_example; m_example.reset(new MyClass()); 用法三(指针的赋值操作): std::auto_ptr&l…