0

这是来自 Autodesk 公司的 AutoCAD 2013 (ObjectARX SDK) 官方文档:

AutoCAD 2013 的 ObjectARX:自述文件 -> 提示和技巧 -> 释放 *作为非常量指针返回的字符串: *

当调用返回非常量字符串指针的方法时(例如,AcDbSymbolTable::getName(char&* pName)),您应该释放返回的字符串占用的内存。例如:

// The getName() call should be followed by a call to
acutDelString(pLtName);pLtTableRcd->getName(pLtName);
// ... other code
acutDelString(pLtName);

请注意,某些 ObjectARX 示例文件缺少释放内存的调用,因此它们会出现内存泄漏。在您自己的代码中使用示例时,请确保正确释放内存。

下一个参数类型是什么意思:

AcDbSymbolTable::getName(char&* pName))

是指针char&吗?凭什么?什么时候使用这种结构?

谢谢你。

4

2 回答 2

6

根据顺时针/螺旋规则 pName是指向 a 引用的指针char

我会说拥有指向引用的指针没有多大意义。反过来(引用指针)也很有用,因为您可以在函数内部更改指针。

于 2013-07-05T07:54:24.147 回答
3

这是文档中的错字;他们的意思是AcDbSymbolTable::getName(char*& pName))

如果您这样阅读,则该段落的其余部分非常有意义:它是一个通过声明为对字符串的引用的输出参数getName检索字符串 () 的函数。char *它甚至继续说返回的“字符串”必须使用acutDelString.

如果您查看头文件中的实际声明,您很可能会发现声明为char*&.

于 2013-07-05T08:53:37.270 回答