【发布时间】:2015-01-08 06:48:40
【问题描述】:
我想用_delete ptr替换delete和delete[];
我需要它,因为delete 方法没有将 ptr 设置为 NULL。例如,现在我正在使用此代码进行内存清理:
#define _delete( ptr ) { delete ptr; ptr = NULL; }
#define _deleteA( ptr ) { delete [] ptr; ptr = NULL; }
MyClass *cls = new MyClass();
int *value = new int value[100];
....
_delete(cls);
_deleteA(value);
但我想使用我的功能:
_delete cls;
_delete value;
可以吗?
或者如果不是如何替换它:
_delete cls;
_delete[] value;
【问题讨论】:
-
class是 C++ 中的关键字。 -
我怀疑这是有效的语法
-
不,这不可能。他们都不是。
-
这也是一个相当无意义的练习,因为它只解决了与指针相关的问题的一小部分,而且只解决了那些简单的问题。考虑当您有多个指向同一内存的指针时会发生什么。
-
使用向量和智能指针,你再也不用写 delete 了。
标签: c++