可能重复:
Smart pointers/safe memory management for C?
我有一个嵌入式应用程序,在这个应用程序中,我在动态内存中分配一个对象,并将它传递给其他模块。
我想创建一个指向这个对象的智能指针。C++中有许多使用和实现智能指针的示例。
我正在寻找一个C语言只实现一个智能指针。
谢谢。
发布于 2010-09-01 17:51:22
是的,我认为这是不可能的(至少,不可能),因为@KennyTM这么说。智能指针是可能的,因为构造函数和析构函数被自动调用。否则,您将不得不自己调用reference()和unreference()。还有用吗?
另外,请参阅前面的,非常相关的问题:Smart pointers/safe memory management for C?
发布于 2010-09-01 17:59:45
您可以构造一个完全封装的“不透明”类型,并按照在c++中所做的那样做您想做的事情。
就像这样。
智能机h:
typedef struct sp smartpointer;
smartpointer new(void *content, size_t s);
int delete(smartpointer p)
void* dereference(smartpointer p);
/* ... */smartpointer.c
/* contains the definition of "struct sp" and the implementation of the
the functions */然后承诺,除非使用dereference,否则永远不会访问数据,但是编译器当然不会为您强制执行该操作。
所以,这是很多麻烦,你应该仔细考虑你可能得到什么。
发布于 2010-09-04 16:09:56
我倾向于认为聪明的指针为你做了(至少)两件事:
memory/object
第二个方面可以通过实现一个不让人们直接复制/分配指针的强大API来近似。
但是第一项是C++及其对构造函数/析构函数的语言支持(RAII的核心)真正发光的地方。事实上,构造函数和析构函数是通过编译器自动插入的代码在正确的位置调用的,这使这种神奇的功能发挥了作用。如果没有内置的对CTORs &DTOR的语言支持,您将只需要近似于效果,或者在必要时依赖用户“做正确的事情”。
https://stackoverflow.com/questions/3620744
复制相似问题