我有一个使用malloc()分配的结构体,在使用完之后,我想要free()它,但是我的程序在这里卡住了。有人能告诉我我做错了什么吗?
以下是我的代码:
struct data
{
char *filename;
char *size;
};
//primarypcs is a long type variable
struct data *primary = (struct data *)malloc( primarypcs * sizeof( struct data ) );
memset( primary, 0, sizeof(struct data *) * primarypcs );
...
...
...
for ( i = 0; i < primarypcs; i++ )
{
free( primary[i].filename ); //<----my program freezes here
free( primary[i].size ); //<----or here
}
free( primary );
提前感谢!
kampi
编辑:
我应该如何正确地为文件名和大小分配内存?
编辑2:
抱歉,我很匆忙,没有告诉你需要的所有信息。现在让我说吧 :) 基本上,我想创建一个应用程序,它可以获取两个给定驱动器/文件夹的文件列表,然后进行比较。我认为(并且仍然认为),最简单的方法是将文件名及其大小存储在像上面提到的结构中。因此,我必须为文件名和大小以及结构动态分配内存(我认为这就是所谓的动态分配内存)。
filename
和size
分配内存。 - Prasoon Sauravsize
是一个整数类型,比如size_t
,而不是char *
。请参阅我的答案以获取详细信息。 - Alok Singhal