相关疑难解决方法(0)

C:处理大数字时避免溢出

我在C中实现了一些排序算法(排序整数),小心地uint64_t用来存储与数据大小有关的任何东西(因此也是计数器和东西),因为算法也应该用几千兆的数据集进行测试整数.

算法应该没问题,并且分配的数据量应该没有问题:数据存储在文件中,我们每次只加载很少的块,即使我们将内存缓冲区扼流到任何大小,一切也能正常工作.

使用高达4千兆字节的数据集进行测试(因此16GB的数据)工作正常(分类4Gint需要2228秒,约37分钟),但是当我们超过那个(即:8 Gints)时算法似乎没有停止(它是现在已经跑了大约16个小时).

我担心问题可能是由于整数溢出,也许循环中的计数器存储在32位变量上,或者我们可能正在调用一些与32位整数一起工作的函数.
还有什么呢?

有没有简单的方法来检查运行时是否发生整数溢出?

c linux 64-bit overflow

16
推荐指数
2
解决办法
3765
查看次数

标签 统计

64-bit ×1

c ×1

linux ×1

overflow ×1