1、指针的初始化指针初始化时,“=”的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是int*p=0;除外,该语句表示指针为空)。此时,*p仅仅是表示定义的是个指针变量,并没有间接取值的意思。比如:int a = 25;int *ptr = &a;int b[10];in...
分类:
编程语言 时间:
2015-01-01 19:46:53
阅读次数:
133
在阅读 Effective C++时,对RAII开始不理解,现总结如下:
RAII是Resource acquisition is initialization的缩写形式,即“资源获取就是初始化”,是C++等编程语言常用的管理资源、避免内存泄露的方法。它保证在任何情况下,使用对象时先构造对象,最后析构对象。
根据RAII 对资源的所有权可分为常性类型和变性类型,代表者分别是boost:shared_ptr和std::auto_ptr;从所管资源的初始化位置上可分为外部初始化类型和内部初始化类型。...
分类:
编程语言 时间:
2014-12-29 18:32:33
阅读次数:
177
一、指向对象的指针在建立对象时,编译系统会为每一个对象分配一定的存储空间,用来存放它的成员。对象空间的起始地址就是对象的指针。所以我们可以定义一个指针变量来存放对象的指针。如有一个类 class Time{...} ,可以有1 Time *ptr; //类名 *指针对象名2 3 Time time....
分类:
编程语言 时间:
2014-12-29 13:31:54
阅读次数:
181
下面的 C 程序分配了1024字节的内存,然后从分配的内存以外的区域读取数据,在分配内存尾部之后写数据,最后将该内存区域变得不可访问。
#include
#include
int main()
{
char *ptr = (char *)malloc( 1024 );
char ch;
//Uninitialized read
ch = ptr[1024];...
分类:
编程语言 时间:
2014-12-28 18:17:49
阅读次数:
387
4 来自Google的奇技 Google-Specific Magic
Google用了很多自己的实现技巧/工具使 C++代码更加健壮, 我们使用C++的方式可能和你在其他地方见到的有所不同;
[Removed]
4.1 智能指针
Tip 如果确实需要使用智能指针的话, scoped_ptr完全可以胜任; 你应该只在非常特定的情况下使用 std::tr1::shared...
分类:
其他好文 时间:
2014-12-28 00:33:50
阅读次数:
218
获得公网ip:bool getPublicIp(string& ip)
{
int sock;
char **pptr = NULL;
struct sockaddr_in destAddr;
struct hostent *ptr = NULL;
char destIP[128];
sock = socket(AF_INET,S...
分类:
编程语言 时间:
2014-12-26 09:43:58
阅读次数:
325
#include #include struct node{ int data; struct node *next;};struct node* create_list(int a[],int len){ struct node *phead; struct node *ptr; struct n...
分类:
编程语言 时间:
2014-12-25 21:44:39
阅读次数:
152
Shared_ptr允许当智能指针被建立起来是指定一个资源释放函数绑定于智能指针身上,也就是说在shared_ptr被初始化的同时也可以指定其管理的资源的释放函数。Shared_ptr提供的某个构造函数接受两个实参:一个是被管理的指针,另一个是引用次数变为0时将被调用的“删除器”。Shared_ptr构造函数坚持其第一个参数必须是个指针。它支持定制型删除器。
缺省情况下C++以by val...
分类:
编程语言 时间:
2014-12-24 21:33:06
阅读次数:
217
对share_ptr,属于强引用型的智能指针。内部通过引用计数实现对对象的管理,在引用计数为0时,自动释放对象。使用share_ptr的缺点是:会造成对象的循环引用,导致对象永远无法释放,比如:Share_ptr可以在多线程中使用,确保指针指向的对象是有效的。Weak_ptr是弱引用性的智能指针。W...
分类:
其他好文 时间:
2014-12-18 22:13:05
阅读次数:
274
#include #include using namespace std;#define DESTROY_POINTER(ptr) if (ptr) { delete ptr; ptr = NULL; }class Element;class Visitor{public: virtual ...
分类:
其他好文 时间:
2014-12-18 18:18:30
阅读次数:
186