我一直在开发一个使用结构体作为字符串存储的项目。我声明了一个包含char类型成员的结构体:
struct datastore1
{
char name[50];
char address[50];
char email[50];
char number[50];
char idnum[50];
};
我知道可以这样写:
char *name, char *address...
,但是如果我们指定它们的最大长度为50,那么在使用该结构的函数中,我将使用大小为30的索引对其进行内存分配:struct datastore1 *dsdata = malloc(30 * sizeof(struct datastore1));
据说我已经通过访问每个索引将所有字符串复制到结构体中,那么在调用malloc后使用的分配内存应该如何释放呢?我尝试在程序结尾处执行free(dsdata)
,但我不确定这是否是正确的方法。我应该逐个释放每个索引吗?请指教。非常感谢您提供的反馈!
free(dsdata)
是正确的。实际上很简单 - 每个malloc应该有确切的一个free,使用相同地址,这个地址是由malloc返回的。 - kaylumstruct datastore1 *dsdata = malloc(30 * sizeof(*dsdata));
。 - 0___________