c - 使用 free() 函数的问题

标签 c linux free

我有一个 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/

相关文章:

c - 打印一个参数两次

linux - 我需要将 750 张 jpg 连续转换为单个 a4 尺寸的 pdf

c - GArray 元素的可用内存

c - free如何知道要释放的内存大小?

c - 接收所有 IPv6 数据包

c - 以下代码的作用是什么?

c - 如何使用 C API 在 Linux 下构建独立的 MQSeries 客户端?

linux - XFS 设备上没有剩余空间

Linux sh脚本将句子拆分成单词

c - Valgrind 错误但没有泄漏