Ril*_*ley 6 c++ macros memory-leaks memory-management
所以我有点像n00b并且正在阅读关于new,delete和指针,我确信在我的生命中我会忘记太多的删除.所以我想知道像下面的宏是否会比它的价值更麻烦.
#define withObject(ptr, value, BODY) \
{ \
ptr = value; \
BODY \
delete ptr; \
ptr=NULL \
}
Run Code Online (Sandbox Code Playgroud)
这个宏会导致一些问题或以意想不到的方式表现吗?
编辑:oops我离开了d on freed.谢谢大家的答案.
小智 14
不,不要这样做.它不会阻止内存泄漏或杂散指针.相反,请阅读智能指针.当前标准提供了auto_ptr的形式,但是有更多(和更好的)可用,具体取决于您的C++平台.
另外,我怀疑你可能过度使用new和delete - 它们应该在代码中很少使用.您应该更喜欢使用值.所以不是这样的:
string * s = new string ( "foobar" );
....
delete s;
Run Code Online (Sandbox Code Playgroud)
你应该简单地写:
string s( "foobar" );
Run Code Online (Sandbox Code Playgroud)
并让编译器为您管理字符串的生命周期.
| 归档时间: |
|
| 查看次数: |
805 次 |
| 最近记录: |