0

我正在更改数据库库中的一些代码。它的工作方式我发送一个 void 指针,以获取它的大小,我调用一个查询并使用查询计算结构的大小。现在的问题是我将结构作为参数接收,但函数在第一次提取之前/中间失败。之后我需要清除结构,但我什至没有大小。我知道最好的方法是将结构的大小作为参数发送,但是我已经编译了成千上万的程序,库是 1996 年的,所以我需要找到一种方法来计算结构大小,即使类型是 void .

我的一个想法是计算下一个不在结构中的元素的位置

0x000010              0x000042
[int|char[30]|int|int][int]

所以大小是32,因为0x00042-0x000010是32。

有没有办法知道我什么时候离开这个结构。

函数的原型是

int getData(char* fields, void* myStruct)

我需要找出结构大小。

对不起,如果我错过了一些信息,代码是巨大的,不幸的是我不能在这里发布。

4

1 回答 1

5

不,一般来说,没有办法,给定 a void *,弄清楚你在追求什么。您唯一能做的就是将其与 进行比较NULL,这在这里当然没有帮助。

请注意,其中没有任何内容void *甚至说它指向 a struct,它也可以指向数组的中间。

如果您在将指针传递给之前有一些全局方法来记录指针getData(),则您可能能够实现一个查找函数,该函数只需将指针值与先前记录的值进行比较,但这只是使用指针值作为键。

于 2012-06-13T14:07:34.547 回答