在C中释放结构的字符串成员
我的结构如下:在C中释放结构的字符串成员,c,free,C,Free,我的结构如下: struct something{ char *string_member; }; 现在我创造了 struct something *s = malloc(sizeof(struct something)); s.string_member = malloc(5); //one way s.string_member = "some thing wrong"; // second way 当我释放s指向的记忆时。在这两种情况下,如何释放分配给string_成员的内存。
struct something{
char *string_member;
};
现在我创造了
struct something *s = malloc(sizeof(struct something));
s.string_member = malloc(5); //one way
s.string_member = "some thing wrong"; // second way
当我释放s指向的记忆时。在这两种情况下,如何释放分配给string_成员的内存。我必须担心第二种情况下的字符串成员吗?您不能在第二种情况下释放它,并且您无法(可移植地)通过查看指针来区分第一种情况和第二种情况。因此不要这样做,请确保始终使用
malloc
或例如strdup
分配string\u成员。这样,您就可以随时免费它(一次)
在第一种情况下,调用free(s.string\u成员)
。在第二种情况下,你不必做任何事情。这是因为字符串不是动态分配的。is所在的位置在加载程序时确定,系统也会对其进行清理
s.string_member = strdup("some thing wrong"); // the other way
...
free(s.string_member);