我有一个 C 程序,它经常使用 char *str[xx]
staff。
一些字符串使用赋值运算符 (=) 填充,不需要释放。
但是其他一些(在同一个数组中)使用 strdup()
填充,需要在程序结束时释放:
char *str[10];
str[i]="Hi";
str[k]=strdup("hi");
两个字符串指针都不为空,释放 str[i] 自然会产生“seg fault”。
我的问题是,在我的程序结束时,我不知道哪个指针指向由 strdup()
生成的字符串。你能帮我找到 strdup
生成的字符串,这样我就可以释放它们了吗?
谢谢
最佳答案
不幸的是,没有语言特性可以让您(可移植地)区分指向动态分配内存的指针和不指向动态分配内存的指针。您可以手动保留动态分配的索引列表。或者,如果性能不是一个大问题,则选择始终在堆上分配。
关于c - 使用 free() 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452030/