我目前有一个使用易于整数溢出的加法和乘法的代码库。我正在尝试用__builtin_add_overflow()函数来代替它。阅读源代码,我发现很多出现以下格式的情况:
x += y;
Run Code Online (Sandbox Code Playgroud)
我可以将其替换为__builtin_add_overflow(x, y, &x)还是需要一个临时变量,如下所示?
int tmp;
if (__builtin_add_overflow(x, y, &tmp)) { ... }
x = tmp;
Run Code Online (Sandbox Code Playgroud) 我目前正在C中编写一个面向数据的大量库.过去几个小时我一直在寻找一个由于内存重定位引起的悬空指针引起的段错误,并在库内部的某处重新放置.因为这个bug只是由于库中另一个部分的内存泄漏而发生,所以我想知道是否有办法让这类错误更具可重复性.
我有这个想法,也许有一种方法可以强制realloc在每次调用时重新分配已分配的内存.我希望在进行单元测试时尽早捕获这些错误.
是否有这样一个LD_PRELOAD库(或类似的)以一种方式挂钩malloc/realloc/...调用它会因为悬空指针而早期崩溃?
该库旨在跨平台,但我想内存错误是C中为数不多的便携式内容之一.