昨天遇到一个小问题。假设function foo()返回一个指针,该函数目的在于从系统中获取一些信息,然后以指针的形式返回给用户。
这里的指针是指向一个全局变量的(比如用一个全局的结构体来保存信息)。当用户区调用的时候,可以先声明一个指针,让后将
结果返回给该指针。当用户每次调用之后就使用该指针时不会出现问题。但是当再次调用foo()并传递其他参数就会出现如下问题:
这里的结果是当第二次调用时第一次的指针被覆盖,最终memcmp返回0.因为他们指向了同样的东西。
怎么解决呢,如果不改foo(),那么只能引入一个临时变量来保存ptr1的内容,然后再与之比较。
关于函数返回指针,这个指针肯定不能指向局部变量的,那么也就意味着要么全局,静态,或者函数参数的一部分。总之要在函数返回后该指针指向的内存仍然有效。但是用户使用的时候一般并不知道该指针是指向全局的,从而导致问题。有什么好办法重写这些返回指针的函数来避免这些问题么?