gpt4 book ai didi

确保释放已用内存的 C++ 宏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:57 25 4
gpt4 key购买 nike

所以我有点菜鸟,正在阅读有关 newdelete 和指针的内容,我确信在类(class)中我会忘记太多删除我生命中的。所以我想知道像下面这样的宏是否会比它的值(value)更麻烦。

#define withObject(ptr, value, BODY)                       \
{ \
ptr = value; \
BODY \
delete ptr; \
ptr=NULL \
}

这个宏是否会导致一些问题或以意想不到的方式运行?

编辑:糟糕,我在 freed 上留下了 d。好的,谢谢大家的回答。

最佳答案

不,不要这样做。它不会防止内存泄漏或流浪指针。相反,请阅读智能指针。当前标准以auto_ptr 的形式提供了一个。 ,但还有更多(和更好的)可用,具体取决于您的 C++ 平台。

此外,我怀疑您可能过度使用了 new 和 delete - 在您的代码中应该很少使用它们。您应该更喜欢使用值。所以不是这样的:

string * s = new string ( "foobar" );
....
delete s;

你应该简单地写:

string s( "foobar" );

并让编译器为您管理字符串的生命周期。

关于确保释放已用内存的 C++ 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com