使用free()函数时出现问题

| 我有一个C语言程序,经常使用
char *str[xx]
人员。 一些字符串是使用赋值运算符(=)填充的,不需要释放。 但是其他一些(在同一数组中)使用ѭ1填充,需要在程序结束时将其释放:   字符* str [10];      str [i] = \“ Hi \”;      str [k] = strdup(\“ hi \”); 两个字符串指针都不为null,释放str [i]自然会生成\“ seg fault \”。 我的问题是,在程序结束时,我没有跟踪哪个指针指向
strdup()
生成的字符串。您能帮我找到由ѭ3generated生成的字符串吗,以便释放它们吗? 谢谢     
已邀请:
        处理此问题的正确方法是通过
malloc()
strdup()
跟踪动态分配的内容。 您必须重构程序才能实现此目标。     
        不幸的是,没有语言功能可以(便携式地)将指向动态分配内存的指针与不指向动态分配内存的指针区分开。您只需手动保留为其动态分配的索引列表。或者,如果性能不是大问题,则选择始终在堆上分配。     
        也许您可以使用命名约定来帮助您记住哪个:
char *str[10];
char *str_p[10];

str[i]=\"Hi\";

str_p[k]=strdup(\"hi\");
(或使用带有指针和标志的结构,该结构指示该特定指针是动态分配的)     

要回复问题请先登录注册