【发布时间】:2012-10-06 22:53:12
【问题描述】:
我有一个列表结构:
typedef struct FaceNode{
FaceNode *next;
Face *aFace;
FaceNode *prev;
} FaceNode;
我使用这个结构作为成员:
FaceNode *myFaces;
并像这样初始化它(在构造函数中)
this->myFaces = (FaceNode*)malloc(sizeof(FaceNode)*1);
稍后我想按如下方式释放它:
FaceNode *theCurrentFaceNode;
Face* theCurrentFace;
while(this->myFaces->next){
theCurrentFaceNode = this->myFaces;
theCurrentFace = theCurrentFaceNode->aFace;
this->myFaces = this->myFaces->next;
free(theCurrentFace);
free(theCurrentFaceNode);
}
现在我的 IDE 告诉我:“错误,函数调用中的参数太多”,对于免费调用。
这有什么问题?
干杯
【问题讨论】:
-
问题在于这是“C with classes”,而不是 C++。如果你没有使用
this->,这将只是 C 代码。 -
是命名空间问题吗?我的意思是,您的应用中是否定义了另一个不带参数的“free()”?
-
正如@Xeo 暗示的那样,您可能应该在这里使用
std::list<Face>。这也将使您在清醒后更容易切换到比链接列表更合理的数据结构。 -
他这样做可能是为了练习,而不是真正编写生产代码。
-
@Seth:没有理由使用
malloc、free和typedef struct Name {...} Name;。这都是愚蠢的C语言。
标签: c++ function struct arguments free