BS:我已经测试过,下面的问题是VS2010特有的,在我对Mingw的测试中,向量内存泄漏, printf("%d\n", testV->size()); 给我'10',这表明它是一个泄漏。
在如下代码中:
class Test{
public:
std::vector<int> *num;
int *n;
};
Test *t = new Test();
t->num = new std::vector<int>;
t->num->assign(10,10);
t->n = new int[20];
t->n[0] = 12345;
int *testN = t->n;
std::vector<int> *testV;
testV = t->num;
delete t;
//I can print n's memory
printf("%d\n", testN[0]); //get 12345, so memory leaked here.
//I can't print num's memory; its size is 0. in release version, it's negative number.
printf("%d\n", testV->size());
删除 t 后,我看到内存 num 指向被清除,在我的 VS10 环境中,我可以看到它的内存被清除为 'ee fe ee fe....'。但是 n 的记忆保持不变。
在我看来,所有内存都来自关键字new,应该通过delete来释放,好吧,这里的num(向量)不是'delete'd,而是自动清除。
我想知道向量指针与其他指针有何不同?