Tag: wordnet

使用C ++ 11中的智能指针包装旧C结构并自动释放它们

我正在使用Word-Net ,一个由普林斯顿大学在九十年代开发的旧C库。 该库是用C语言编写的,只显示标题但不显示其实际实现。 我使用的唯一结构是: SynsetPtr 我称之为的两个function是: findtheinfo_ds traceptrs_ds 这两个函数都返回一个SynsetPtr。 但是,当SynsetPtr表示感知列表时,我必须使用它来释放它 free_syns 然而,当SynsetPtr用于遍历链表(分层树)时,我必须使用它来释放它 free_synset 文档不清楚何时调用哪个,以及为什么。 这很快就成了我的噩梦。 我花了三天时间慢慢地通过泄漏,双重释放,内存分配等工作。 所以我想知道,有没有办法让我绕过这些函数或实际的结构,让C ++管理内存? 理想情况下,当没有更多对它们的引用时,我希望它们是免费的,就像std :: shared_ptr的情况一样。 这是可能的,知道Synset_Ptr没有析构函数,但是必须调用dealloc函数吗? 或者,我可以包围创建(分配)这些结构的两个函数,以某种方式预订对象,并在没有引用它们时销毁它们吗? 我真的很感激任何帮助! 编辑: 这是wn.h中SynsetPtr的确切声明 /* Structure for data file synset */ typedef struct ss { long hereiam; /* current file position */ int sstype; /* type of ADJ synset */ int fnum; /* […]