我正在尝试实现一个 bigInt 库。我一直在检查GMP、ttmaht或libtommath等其他库,但它们中的任何一个都满足项目的要求(因为许可证,因为它们只使用堆栈等)
我将遵循 libtommath 的方法(确实有据可查,并且全部用 C 编写),但我希望所有内容都存储在堆中。libtommath 在这样的结构中实现了 bigInt:
typedef struct {
int used, alloc, sign;
mp_digit *dp;
} mp_int;
如您所见,它具有访问值的间接方式。(mp_digit 是大整数的位数)。我想摆脱间接,所以在堆中有某种类似的结构,其中最后一个元素是 mp_digit[],其中每个 mp_int 实例的大小可能不同。
我可以使用 void* 和 malloc() 来做到这一点,知道第一个 X 位置是带有信息的 int(使用、分配、符号等),然后知道偏移量后访问 mp_digit[],但我不喜欢这个想法。我想知道哪种方法更好。
我发现了其他类似的问题,例如这个或这个,但它们并没有全部存储在堆中,所以我的有点棘手/不同。
谢谢,