gpt4 book ai didi

c++ - C内存管理

转载 作者:行者123 更新时间:2023-11-30 18:43:25 26 4
gpt4 key购买 nike

以下是我如何在 C++ 中进行某种形式的自动内存管理的草图:

template<class T>
class Ptr{
public:
/* Some memory management stuff (ref counting etc.)
as Ptr object is initialized */
Ptr( ... ) { .. }

/* Manage reference counts etc.
as Ptr object is copied -- might be necessary
when Ptr is passed to or returned from functions */
Ptr<T>& operator=( .. ) { .. };

/* Do memory management stuff
when this "Pointer" object is destroyed. */
~Ptr() { .. }

private:
/* Pointer to main object */
T* object;
}

class Obj{
public:
static Ptr<Obj> newObj( .. ) { return Ptr<Obj>( new Obj( .. ) ); }
private:
/* Hide constructor so it can only be created by newObj */
Obj( .. ) { .. }
/* some variables for memory management routines */
int refcnt;
..
}

这样,最终用户就不必调用 new 或 malloc,而可以调用 Obj.newObj( .. )。

但是,我对如何为 C 做类似的事情感到非常困惑。

它不必与上面完全一样,但我不想在不重要的时候关心内存管理。

我觉得最大的问题是,当 C 中的变量超出范围时,我实际上没有一个“析构函数”可以发出信号让我知道该变量已超出范围。

最佳答案

是的,这就是 C++ 的主要好处。您可以创建封装功能的类。此功能可以包括构造函数和析构函数,以确保以受控方式创建、管理和销毁数据。

C 中没有这样的选项,除非您实现支持此类选项的整个框架。

关于c++ - C内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8932543/

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