这来自Autodesk公司的AutoCAD 2013(ObjectARX SDK)的官方文档:
AutoCAD 2013的ObjectARX:自述文件 - >提示和技巧 - >释放 * 返回非常量指针的字符串: *
调用返回非常量字符串指针的方法时(for 例如,
AcDbSymbolTable::getName(char&* pName))
,你应该释放 返回的字符串占用的内存。例如:// The getName() call should be followed by a call to acutDelString(pLtName);pLtTableRcd->getName(pLtName); // ... other code acutDelString(pLtName);
请注意,某些ObjectARX示例文件缺少对free的调用 内存,所以他们会出现内存泄漏。使用样品时 在你自己的代码中,确保正确释放内存。
下一个参数类型意味着什么:
AcDbSymbolTable::getName(char&* pName))
是指向char&
的指针吗?凭什么?什么时候使用这样的结构?
谢谢。
答案 0 :(得分:6)
根据clockwise/spiral rule pName
是指向char
的引用的指针。
我想说有一个指向引用的指针没有多大意义。另一种方式(引用指针)可能很有用,因为您可以更改函数内部的指针。
答案 1 :(得分:3)
这是文档中的拼写错误;他们的意思是AcDbSymbolTable::getName(char*& pName))
。
如果您这样阅读,则段落的其余部分非常有意义:getName
是一个函数,它通过声明为字符串引用的out参数来检索字符串(char *
)。它甚至继续说必须使用acutDelString
释放返回的“字符串”。
如果您查看头文件中的实际声明,您很可能会找到声明为char*&
的参数。