focus on linux, c/c++, lua

容器中存储指针的好处

1,注意存储的是外部指针的一个拷贝,删除时首先是删除这个拷贝指针的内容,也就是删除外部指针所指向内存的内容,然后再删除容器中的变量(用来存储指针的内存).

如:char* ptr = new char[16];

vector<char*> vecPtr;

vecPtr.push_back(ptr);

这个时候是

_ptr = ptr; // 拷贝指针

在vecPtr中存储的是4个字节的指针拷贝.

2,然后是删除vector中的指针变量,即N * 4Byte,在vector中是不再重新分配空间的.

详细代码如下:

#include "stdafx.h"
#include <vector>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
vector<char*> vecPtr;
char* ptr = new char[16];
ptr[0] = 0;
memcpy(ptr, "abc", 16);
vecPtr.push_back(ptr);
vector<char*>::iterator it = vecPtr.begin();
for (; it != vecPtr.end(); )
{
   delete[] *it;
   it = vecPtr.erase(it);
}
return 0;
}


posted on 2010-10-20 10:08 zuhd 阅读(930) 评论(0)  编辑 收藏 引用 所属分类: c/c++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理