RAII(resource acquisition is initialization):资源获取时便是初始化时机。不论控制流如何离开执行的区域块,其析构函数被调用,资源被释放。为防止内存泄露使用auto_ptr或shared_ptr();auto_ptr sp(new class)+shared_...
分类:
其他好文 时间:
2014-08-11 17:22:02
阅读次数:
204
内存管理一直是令C++程序员最头疼的工作,C++继承了C那高效而又灵活的指针,使用起来稍微不小心就会导致内存泄露、野指针、越界访问等访问。虽然C++标准提供了只能指针std::auto_ptr,但是并没有解决所有问题。boost的smart_ptr库是对C++98标准的绝佳补充。它提供了六种智能.....
分类:
其他好文 时间:
2014-08-09 18:41:18
阅读次数:
386
看这样一个模板,它生成的类使得一个名字和一个t类型的对象的指针关联起来。templateclass namedptr {public: namedptr(const string& initname, t *initptr); ...private: string name; t *ptr;...
分类:
其他好文 时间:
2014-08-09 18:11:48
阅读次数:
227
有天重建一段代码时,遇到了循环右移指令,不知道用C语言怎么实现,后来得到小伟指点,感谢。。me 15:56:38004BD2C9 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]004BD2CC D1CA ROR EDX,1004BD2CE ...
分类:
编程语言 时间:
2014-08-08 15:53:06
阅读次数:
239
boost::shared_ptr是可以共享所有权的智能指针。下面用例子说明:1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 class Test 8 { 9 public:10 Test()11 {cout p...
分类:
其他好文 时间:
2014-08-08 01:51:05
阅读次数:
306
当你拷贝一个auto_ptr时,它所指向的对象的所有权被移交到拷入的auto_ptr上,而它自身被置为NULL。我的理解是:拷贝一个auto_ptr意味着改变它的值。例如:
auto_ptr pint1(new int);//pint1指向一个int
auto_ptr pint2(pint1);//pint2指向pint1的int;pint1被置为NULL
pint1...
分类:
其他好文 时间:
2014-08-07 00:48:57
阅读次数:
208
概述:C++中有很多种智能指针,auto_ptr就是其中的一种,该智能指针主要是为了解决“因程序异常退出发生的内存泄漏”这类问题的。
我们先来看下面的问题代码
#include
#include
#include
using namespace std;
//一般指针的处理方式
template
class OldClass
{
public:
OldClass(T a)
{
ptr...
分类:
其他好文 时间:
2014-08-06 22:59:32
阅读次数:
326
世风日下,垃圾邮件的泛滥,各种反垃圾邮件的技术相继提出。而域名反向解析(RDNS)是最常见一种,现在要需要检查IP反向解析(PTR)记录的邮件服务器越来越多,尤其是国外的邮件服务器,很多时候被对方拒绝中继或不能发送被退信,都是因为没有反向解析造成的.但是因为种种原因,比..
分类:
其他好文 时间:
2014-08-05 14:21:50
阅读次数:
646
//去左空格char* ltrim(char *ptr){ int start,end,i; end=strlen(ptr)-1; if (ptr) { for(start=0; isspace(ptr[start]); start++) ...
分类:
其他好文 时间:
2014-08-05 13:59:19
阅读次数:
216
#include
#include
#include
/*
避免错误:
size 进行判断后在进行动态分配。
为什么?
malloc在不同编译器上有不同的实现,有的申请0大小返回NULL,
有的就可以返回一个地址,似乎后者较为常见。
当malloc分配内存时它除了分配我们指定SIZE的内存块,还会分配额
外的内存来存储我们的内存块信息,用于维护该内存块。
其实内存是分片的, 比喻说你malloc(10); 不是真的给你10个字节,...
分类:
其他好文 时间:
2014-08-04 17:54:47
阅读次数:
180