我们有一个例子证明了由于C中不正确的malloc大小造成的非确定性故障吗?由于malloc大小不正确导致的不确定性失败?
例如,在我的“gzip的”程序在linux:
.
.
.
char* a = (char*)malloc(256) // correct version
is changed to
char* a = (char*)malloc(206) //faulty version
.
.
.
正因为如此,该传递正确的版本的测试箱TC变为上有故障的版本失败(即,分段故障)。 但是,失败是非确定性的。有时,错误版本的失败测试用例tc不会导致段错误(即通过)。
这可能是由于malloc的'未定义'行为,但我不知道它是如何发生的。
有没有人可以给我一些具体的例子? 预先感谢您。
[请不要在C]中输入'malloc()'的返回值(http://stackoverflow.com/a/605858/28169)。 – unwind