Tag: 删除运算符

在C ++中删除一个指针

背景:我试图围绕着指针,几周前我们刚刚在学校看到他们,而今天练习时,我碰到一个愚蠢的? 问题,它可以是超级简单的,但我几乎没有编程经验。 我已经看到了很多有关删除指针的问题,但它们似乎都与删除类而不是“简单”指针(或任何适当的术语)有关,下面是我正在尝试的代码跑: #include <iostream>; using namespace std; int main() { int myVar, *myPointer; myVar = 8; myPointer = &myVar; cout << "delete-ing pointers " << endl; cout << "Memory address: " << myPointer << endl; // Seems I can't *just* delete it, as it triggers an error delete myPointer; cout << "myPointer: " << […]

C ++删除vector,对象,空闲内存

我完全混淆了删除C ++中的东西如果我声明一个对象数组,如果我使用clear()函数。 我能确定内存是否被释放? 例如 : tempObject obj1; tempObject obj2; vector<tempObject> tempVector; tempVector.pushback(obj1); tempVector.pushback(obj2); 我可以安全地打电话清除所有的内存? 或者我需要迭代一个一个地删除? tempVector.clear(); 如果这个场景被改变为对象的指针,答案会和上面一样吗? vector<tempObject> *tempVector; //push objects…. tempVector->clear();

重载新/删除

我在我的程序中做了一个内存泄漏查找程序,但我的方式超载新的和删除(也是新的[]和删除[])似乎没有任何事情。 void* operator new (unsigned int size, const char* filename, int line) { void* ptr = new void[size]; memleakfinder.AddTrack(ptr,size,filename,line); return ptr; } 上面的代码片段显示了我重载new的方式。 我想这是运营商返回void *的东西,但我不知道该怎么办。

删除指向const(T const *)的指针

我有一个关于const指针的基本问题。 我不允许使用const指针调用任何非const成员函数。 不过,我可以在const指针上做这个: delete p; 这将调用类的析构函数,实质上是非常量的“方法”。 为什么这是允许的? 仅仅是为了支持这个: delete this; 还是有其他原因?

在删除之前是否有任何理由检查NULL指针?

在删除指针之前,我经常会看到遗留代码检查NULL , if (NULL != pSomeObject) { delete pSomeObject; pSomeObject = NULL; } 删除它之前是否有任何理由检查NULL指针? 之后将指针设置为NULL的原因是什么?