【发布时间】:2014-03-29 01:11:06
【问题描述】:
我正在尝试释放一些我在另一个函数中分配的内存。这方面的一个例子是:
MusicRec * createRecord(char * title, char * artist, double fileSize, int length, char theType)
{
MusicRec * newRecord;
MusicRec * next;
newRecord = malloc(sizeof(MusicRec));
newRecord->title = malloc(sizeof(char)*(strlen(title))+1);
strcpy(newRecord->title, title);
newRecord->artist = malloc(sizeof(char)*(strlen(artist))+1);
strcpy(newRecord->artist, artist);
newRecord->sizeInKB = fileSize;
newRecord->lengthInSeconds = length;
newRecord->type = theType;
newRecord->next = NULL;
next = NULL;
return(next);
}
我在那个函数中分配了内存,但现在我试图在不同的函数中释放这个分配的内存,例如我的主函数。我该怎么做?
【问题讨论】:
-
在一个函数中分配内存并在另一个函数中释放它是有问题的。你不能在你的 Main 函数中分配它,将分配的内存传递给你的另一个函数,然后在你返回 Main 后再次释放它吗?
-
该函数的奇怪之处在于您声明了两个指针,但实际上只使用了
newRecord指针。然而,在将其设置为NULL后,您返回未使用的指针。结果是该函数总是返回NULL,并且对新分配的内存不做任何事情。该函数可能应该返回newRecord。 -
@Dour:你真的是那个意思?您将如何构建任何抽象?
-
可以
malloc在一个地方,free在另一个地方。 -
如果我释放一个结构的元素,它还能工作吗?
标签: c linked-list malloc