使用free()函数的问题

rah*_*man 4 c linux free

我有一个char *str[xx]经常使用员工的C程序.一些字符串使用赋值运算符(=)填充,无需释放.但是其他一些(在同一个数组中)填充使用strdup(),需要在程序结束时释放:

char*str [10];

STR [1] = "您好";

STR [K] =的strdup( "HI");

两个字符串指针都是非空的,释放str [i]自然会产生"seg fault".我的问题是,在我的程序结束时,我没有跟踪哪个指针指向由其生成的字符串strdup().你可以帮助我找到生成的字符串,strdup以便我可以释放它们吗?谢谢

Arm*_*yan 6

遗憾的是,没有语言功能可以(便携地)区分指向动态分配内存的指针和不指向内存的指针.您可以手动保留动态分配的索引列表.或者,如果性能不是一个大问题,则选择始终在堆上进行分配.

  • +1始终在堆上分配是最实用的解决方案 (2认同)