我有一个函数 foo(),它分配内存并返回它。我在主要功能结束时释放它是标准做法吗?
char* foo(){
char * p;
p = malloc(sizeof(char) * 4); /* edit - thanks to msg board */
p[0] = 'a';
p[1] = 'b';
p[2] = 'c';
p[3] = '/0'; /* edit: thanks to the msg board. */
return p;
}
int main(int argc, char *argv[])
{
char * p2;
p2 = foo();
printf("%s", p2);
free(p2);
return 0;
}
结束时释放main()
是的,这是正确的做法。不过,您可能会考虑用 null 终止该字符串。可以这么说,更惯用的设计是对所有内存管理进行“同一级别”。就像是:
void foo(char *p)
{
p[0] = 'a';
p[1] = 'b';
p[2] = 'c';
p[3] = '\0';
}
int main(int argc, char **argv)
{
char *p2 = malloc(4);
foo(p2);
printf("%s", p2);
free(p2);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)