C语言,指针传递给客户端的释放问题
需求是,比如做一个通用的遍历一个文件夹的函数库(C++里做过一个这样的类,现在要改成C语言版本)
遍历到每个文件的时候,只负责提取出文件信息,对每个文件的处理,是由客户端传递的函数指针处理的。
如果fileinfo fi是个局部变量,传递进PROCESS 之后,如果客户端想存储这个指针,只好再复制一遍fileinfo这个变量。如果是fileinfo这里生成的时候就是指针,就需要在客户端决定什么时候释放这个指针。原来C++版本是用shared_ptr做的,智能指针,自动释放。
C语言要怎么做啊?
遍历到每个文件的时候,只负责提取出文件信息,对每个文件的处理,是由客户端传递的函数指针处理的。
typedef int (*PROCESS)(const fileinfo* fi);
int Traverse(const char* folder, PROCESS p)
{
while(findnext())
{
fileinfo fi = getinfo(...);
p(&fi);
}
}如果fileinfo fi是个局部变量,传递进PROCESS 之后,如果客户端想存储这个指针,只好再复制一遍fileinfo这个变量。如果是fileinfo这里生成的时候就是指针,就需要在客户端决定什么时候释放这个指针。原来C++版本是用shared_ptr做的,智能指针,自动释放。
C语言要怎么做啊?
...全文
相关推荐
c语言指针变量作为函数参数传递
按引用传递则允许函数直接操作原始数据,从而可以改变原始数据的值。在C语言中,指针变量作为函数参数传递是实现按引用传递的一种方式。
C语言中 值传递和指针传递实例详解
在C语言中,函数参数的传递主要有两种方式:值传递(Value Passing)和指针传递(Pointer Passing)。
关于C语言指针赋值的问题详解
在C语言中,指针是编程中的重要概念,它用于存储内存地址,允许我们直接操作内存。在给定的代码示例中,主要涉及到指针赋值的问题,以及如何处理编译器发出的警告。首先,我们来看一下原始代码中出现的问题:1.
C语言指针总结
总结来说,指针是C语言中实现动态数据结构、参数传递、函数返回值等高级功能的重要工具。
四道经典C语言指针试题
在`free`之后添加`str = NULL;`可以避免这种悬挂指针的问题,这是一种良好的编程习惯,有助于减少潜在的错误。总结起来,这四道试题强调了以下C语言指针使用的关键点:1.


